Qt comboBox 绑定数据测试程序

本文通过一个简单的Qt应用程序展示了如何使用QComboBox组件。该程序创建了一个带有三个选项的下拉列表,并在用户选择不同的项时显示相应的文本和数值数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


 cat testdlg.h
#ifndef _TEST_DLG_H
#define _TEST_DLG_H

#include <QDialog>
class QComboBox;

class TestDlg : public QDialog
{
Q_OBJECT

public:
	TestDlg(QWidget *parent=0);

private slots:
	void slotComboChanged(int i);
private:
	QComboBox * m_comboBox;

};
#endif

 cat testdlg.cpp
#include <QtGui>
#include "testdlg.h"

TestDlg::TestDlg(QWidget *parent)
	:QDialog(parent)
{
		this->setWindowTitle(tr("监控系统"));
		m_comboBox = new QComboBox(this);
		m_comboBox->addItem("line 1", 1);
		m_comboBox->addItem("line 2", 3);
		m_comboBox->addItem("line 3", 5);

		connect(m_comboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(slotComboChanged(int)));
		QHBoxLayout* layout = new QHBoxLayout();
		layout->addWidget(m_comboBox);
		this->setLayout(layout);
}

void TestDlg::slotComboChanged(int i)
{
	QString content=m_comboBox->itemText(i);
	QVariant data=m_comboBox->itemData(i);
//	qDebug() << content << data;
	qDebug() << content << data.toInt();
}
cat main.cpp 
#include <QtGui>
#include "testdlg.h"

int main(int argc, char *argv[])
{
	QTextCodec *codec=QTextCodec::codecForName("utf-8");
	QTextCodec::setCodecForLocale(codec);
	QTextCodec::setCodecForTr(codec);

	QApplication a(argc,argv);
	QFont font= a.font();
	font.setPointSize(16);
	a.setFont(font);

	TestDlg dlg;
	dlg.show();

	return a.exec();
}
执行结果: (选择comboBox, 打印输出)
 ./test2
"line 2" 3
"line 3" 5
"line 1" 1


### 如何使用 Qt QComboBox 示例教程最佳实践 #### 创建并初始化 QComboBox 控件 为了创建 `QComboBox` 实例,可以利用构造函数完成对象的实例化。通常情况下,在窗体类的构造函数中进行此操作。 ```cpp #include <QComboBox> // 构造函数内 QComboBox *comboBox = new QComboBox(this); ``` 控件创建完毕之后,将其添加到布局管理器中以便显示出来[^1]。 #### 添加项至组合框 通过调用 `addItem()` 或者 `addItems()` 方法向 `QComboBox` 中加入条目。前者用于单个字符串参数输入;后者接受一个字符串列表作为参数。 ```cpp comboBox->addItem("Item 1"); comboBox->addItems(QStringList() << "Item 2" << "Item 3"); ``` 这些方法使得开发者能够轻松填充下拉菜单的内容。 #### 设置当前选中项 要改变默认被选中的项目,可借助于 setCurrentIndex(int index) 函数指定索引位置,或者是 setCurrentText(const QString &text),依据具体文字匹配对应选项。 ```cpp comboBox->setCurrentIndex(0); // 设定第一个元素为初始状态下的选定值 ``` #### 自定义样式表应用 对于外观定制需求而言,`QComboBox` 支持 CSS 类似的样式声明——即所谓的 Qt 样式表 (QSS)[^2]。这允许开发人员调整字体大小、颜色以及其他视觉属性: ```css /* 定义样式 */ QString styleSheet = "QComboBox {" "background-color: white;" "border-style: outset;" "border-width: 1px;" "border-radius: 3px;" "border-color: gray;" "padding: 0 8px;" "min-width: 6em;" "}"; comboBox->setStyleSheet(styleSheet); ``` 上述代码片段展示了如何运用 setStyleSheet 来美化组件界面。 #### 连接信号与槽机制 当用户交互发生时(比如选择了不同的条目),往往希望触发某些特定逻辑处理动作。这时就可以依靠 Qt 的核心特性之一 —— **信号-槽** 结构来进行事件响应绑定。 ```cpp connect(comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(onCurrentIndexChanged(int))); void onCurrentIndexChanged(int index){ qDebug()<<"Selected Index:"<<index; } ``` 这段 C++ 语句实现了每当所选索引发生变化就会自动执行关联的方法回调功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值