- 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.