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

     

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