Qt積少成多,自用,控制元件賦值取值封裝
阿新 • • 發佈:2022-11-30
QString AuthorityMethod::getItemVal(QWidget * wid) { QString className = wid->metaObject()->className(); if (className == "QLineEdit") { return ((QLineEdit*)wid)->text(); } if (className == "QComboBox") { return ((QComboBox*)wid)->currentText(); } if (className == "QCheckBox") { if (((QCheckBox*)wid)->checkState() == Qt::Checked) return "1"; else return "0"; } if (className == "QSpinBox") { return ((QSpinBox*)wid)->text(); } if (className == "QRadioButton") { if (((QRadioButton*)wid)->isChecked()) return "1"; else return "0"; } if (className == "QDateTimeEdit") { return ((QDateTimeEdit*)wid)->text();; } if (className == "QListView") { QString strList; QModelIndex Index; QStandardItem* item; QStandardItemModel* _model= ((QStandardItemModel *)qobject_cast<QStandardItemModel *>(((QListView*)wid)->model())); if (_model == nullptr) return ""; for (int i = 0; i <_model->rowCount(); i++) { Index = _model->index(i, 0); item = _model->itemFromIndex(Index); strList += item->text() + ","; } strList.replace("μm", ""); return strList; } return ""; } void AuthorityMethod::setItemVal(QWidget * wid, QString val) { QString className = wid->metaObject()->className(); if (className == "QLineEdit") { ((QLineEdit*)wid)->setText(val); } if (className == "QComboBox") { ((QComboBox*)wid)->setCurrentText(val); } if (className == "QCheckBox") { if (val == "1") ((QCheckBox*)wid)->setCheckState(Qt::Checked); else ((QCheckBox*)wid)->setCheckState(Qt::Unchecked); } if (className == "QSpinBox") { ((QSpinBox*)wid)->setValue(val.toInt()); } if (className == "QRadioButton") { if (val == "1") ((QRadioButton*)wid)->setChecked(true); } if (className == "QDateTimeEdit") { ((QDateTimeEdit*)wid)->setDateTime(QDateTime::fromString(val, "yyyy-MM-dd")); } if (className == "QListView") { QStringList strList = val.split(",", QString::SkipEmptyParts); if (strList.empty()) return; QStandardItemModel* ItemModel = new QStandardItemModel(this); for (int i = 0; i < strList.size(); i++) { QString str = static_cast<QString>(strList.at(i)); if (str.indexOf("D") == -1 && str.indexOf("μm") == -1) str += "μm"; QStandardItem *item = new QStandardItem(str); ItemModel->appendRow(item); } ((QListView*)wid)->setModel(ItemModel); } }
自用的一些控制元件封裝,持續新增。。。