- QTableView
QAbstractTableModel->setData(const QModelIndex & index, const QVariant & value, int role = Qt::EditRole)
CheckBoxemit实时刷新,需要用dataChanged(index, index);
获取表格子控件内容:QMyComboBox *item_value = dynamic_cast<QMyComboBox*>(tableView->indexWidget(index1)); QDateTimeEdit *time = dynamic_cast<QDateTimeEdit*>(tableView->indexWidget(index1)); QString str1 = QString(); if (item_value) str1 = item_value->currentText(); else if (time) str1 = time->date().toString("yyyy/MM/dd"); else str1 = model->data(index1).toString();
- QDate
QDate的格式化:static QDate fromString(const QString &s, Qt::DateFormat f = Qt::TextDate);
QDate的DateFormat与QDateEdit/QDateTimeEdit控件的格式要一样,不一致会失败显示成默认的2000/1/1。
我当时不知道控件是yyyy/M/d形式,从db里读取数据,在QDateEdit->setDate(QDate::fromString(数据, "yyyy/MM/dd"));对于部分数据如2019/4/24、2019/11/11可以显示,但是对于2019/1/1或2019/11/1或2019/1/11则显示失败,改成2019/01/01也是失败。
只要两者格式改为一样即可:
如果将QDateEdit->setDate(QDate::fromString(数据, "yyyy/MM/dd"));
改为QDateEdit->setDate(QDate::fromString(数据, "yyyy/M/d"));可以成功。
如果将QDateEdit/QDateTimeEdit控件displayFormat改成"yyyy/MM/dd"也可以。 - QT自带的信号,参数类型不可省去
connect(m_pSystemWatcher, SIGNAL(fileChanged(QString)), this, SLOT(fileUpdated(QString)));
fileChanged的QString不可省略 - QDialog
对话框无最小化、无帮助按钮:setWindowFlags(windowFlags()&~Qt::WindowMaximizeButtonHint&~Qt::WindowContextHelpButtonHint);
对话框无边框:setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint); - QTableWidget
表列宽自适应内容:ui.tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
QTableWidget表格中嵌套QCombox后获取QCombox内容://嵌套的时候绑定事件: connect(ui.combox, SIGNAL(currentTextChanged(QString)), this, SLOT(slotModify(QString))); //获取QCombox的内容 void MyClass::slotModify(const QString &str) { QComboBox *combox = dynamic_cast<QComboBox*>(sender()); if (!combox) return; QTableWidgetItem *item = ui.tableWidget->itemAt(QPoint(combox->x(), combox->y())); slotModify(item->row(), item->column()); }
- QCombox
默认为未选择:ui.combox->setCurrentIndex(-1); - QString
提取中文:QString strKey = QString::fromLocal8Bit("1-a测b试"); QString strText; for each (QChar var in strKey) { ushort uni = var.unicode(); if (uni >= 0x4E00 && uni <= 0x9FA5) strText += var; }
ThreeThinksForQT
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.