1. 程式人生 > 其它 >Qt積少成多,自用,控制元件賦值取值封裝

Qt積少成多,自用,控制元件賦值取值封裝


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

}

自用的一些控制元件封裝,持續新增。。。