PDA

View Full Version : سوال: خطا در tableWidget



javad.t
پنج شنبه 29 بهمن 1394, 18:16 عصر
سلام من یه tableWidget در پنجره اصلی گذاشتم حالا اگه بخوام بدونم سلول خانه اول خالی است خطا میده ولی موقعی که متنی رو داخلش مینویسم خطا نمیده میشه دوستان یه راهنمایی بکنند
اینم کد برنامه خود برنامه رو هم قرار دادم.

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->tableWidget->setColumnCount(3);
ui->tableWidget->setRowCount(3);
ui->tableWidget->resizeColumnsToContents();
}

MainWindow::~MainWindow()
{
delete ui;
}

void MainWindow::on_pushButton_clicked()
{
if(ui->tableWidget->item(0,0)->text().isEmpty())
ui->label->setText("empty");
else
ui->label->setText("full");
}

javad.t
جمعه 30 بهمن 1394, 03:32 صبح
ببخشید دوستان خودم پیداش کردم مشکل در نحوه چک کردن بود

قسمتی که باید تغیر میکرد:

QTableWidgetItem *item=ui->tableWidget->item(0,0); if(!item||item->text().isEmpty()) ui->label->setText("empty"); else ui->label->setText("full");

pswin.pooya
جمعه 30 بهمن 1394, 05:03 صبح
برنامه نویسی در حجم کد زیاد نیاز به قراردادهای خوب داره وگرنه بعد از یه مدت هیچی از پروژه نمی شه سر در آورد. اینجوری چک کنی کدت خیلی کثیف می شه بهتره که این کدها رو ماکرو کنی مثلا:



if ( CHECK_EMPTY_CELL(ui->tbl_sells,0,0) == true ) {....}

به غیر از اون بهتره که از ! برای if ها استفاده نکنی چون بشدت خوانایی کد رو کاهش می ده. این روش خیلی بهتره:


if ( item == nullptr || item->text->isEmpty() == false )

همینطور تمام عناصر صفحه رو با نوع شون جدا کنی باعث میشه سریعتر پیدا بشن:



ui->tbl_sells
ui->lbl_check_empty

شرکت های قوی نرم افزاری حتی به فاصله ها هم حساس هستند مثلا شرکت معروف id که تولید کننده بازی هست می گه تمام member باید توی یک ستون باشند:


int m_iInt1;
float m_fFloat1;

javad.t
جمعه 30 بهمن 1394, 14:14 عصر
سلام باتشکر از شما همشهری عزیز در برنامه اصلی سعی شده از نکاتی شما به اون اشاره کردید استفاده بشه ولی بعضی از نکات واقعا جالب بودند

خیلی ممنون