ThreeThinksForQT

  • 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;
    }

     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章