Qt中的下拉选择框QCombobox
阅读数:263 评论数:0
跳转到新版页面分类
C/C++
正文
一、简单示例
// 创建一个 QComboBox 控件
QComboBox *comboBox = new QComboBox(parent);
// 添加选项到下拉列表中
comboBox->addItem("Option 1");
comboBox->addItem("Option 2");
comboBox->addItem("Option 3");
// 获取当前选中的选项
QString selectedOption = comboBox->currentText();
// 当用户选择不同的选项时触发信号
connect(comboBox, QOverload<int>::of(&QComboBox::currentIndexChanged),
[=](int index){
QString selectedOption = comboBox->itemText(index);
// 处理选项变化的逻辑
});
二、设为只读
QComboBox *comboBox = new QComboBox(parent);
// 添加选项到下拉列表中
comboBox->addItem("Option 1");
comboBox->addItem("Option 2");
comboBox->addItem("Option 3");
// 设置为只读模式,用户不能编辑文本
comboBox->setEditable(false);
三、禁用,不可选择
QComboBox *comboBox = new QComboBox(parent);
// 添加选项到下拉列表中
comboBox->addItem("Option 1");
comboBox->addItem("Option 2");
comboBox->addItem("Option 3");
// 禁用 QComboBox,使其不可选择
comboBox->setEnabled(false);
四、修改下拉项的样式
// 使用样式表自定义下拉项的样式
comboBox->setStyleSheet("QComboBox QAbstractItemView {"
"item { height: 40px; }" // 设置每项的高度为 40 像素
"}");
// 使用样式表自定义下拉项的样式
comboBox->setStyleSheet("QComboBox QAbstractItemView {"
"padding: 10px;" // 设置 padding 大小
"}"
"QComboBox QAbstractItemView::item {"
"background-color: red;" // 设置 padding 部分的背景颜色为红色
"}");
五、设置当前选择项
1、使用索引
你可以使用 setCurrentIndex(int index)
方法来设置 QComboBox
的当前选择项。索引从 0 开始。
QComboBox *comboBox = new QComboBox(parent);
// 添加一些选项
comboBox->addItem("Option 1");
comboBox->addItem("Option 2");
comboBox->addItem("Option 3");
// 设置当前选择项为第二个选项(索引为1)
comboBox->setCurrentIndex(1);
2、使用文本
你可以使用 setCurrentText(const QString &text)
方法来设置 QComboBox
的当前选择项。该方法会选择与给定文本匹配的第一个项。
QComboBox *comboBox = new QComboBox(parent);
// 添加一些选项
comboBox->addItem("Option 1");
comboBox->addItem("Option 2");
comboBox->addItem("Option 3");
// 设置当前选择项为 "Option 2"
comboBox->setCurrentText("Option 2");
3、根据数据
如果你使用 addItem(const QString &text, const QVariant &userData)
方法为每个项添加了用户数据,你可以使用 findData
方法来查找具有特定数据的项,并使用 setCurrentIndex
方法设置当前选择项。
QComboBox *comboBox = new QComboBox(parent);
// 添加一些选项和用户数据
comboBox->addItem("Option 1", 1);
comboBox->addItem("Option 2", 2);
comboBox->addItem("Option 3", 3);
// 查找具有用户数据 2 的项的索引
int index = comboBox->findData(2);
// 设置当前选择项为具有用户数据 2 的项
if (index != -1) { // 确保找到了匹配的项
comboBox->setCurrentIndex(index);
}
六、设置校验器
在 QComboBox
中,默认情况下是不能直接添加校验器的。QComboBox
的编辑框本质上是一个 QLineEdit
,因此可以通过设置 QLineEdit
的校验器来实现输入限制。
#include <QApplication>
#include <QComboBox>
#include <QLineEdit>
#include <QIntValidator>
#include <QVBoxLayout>
#include <QWidget>
class MyWidget : public QWidget {
Q_OBJECT
public:
MyWidget(QWidget *parent = nullptr) : QWidget(parent) {
// 创建 QComboBox
QComboBox *comboBox = new QComboBox(this);
// 添加一些示例项
comboBox->addItem("Option 1");
comboBox->addItem("Option 2");
comboBox->addItem("Option 3");
// 获取 QComboBox 的编辑框
QLineEdit *lineEdit = comboBox->lineEdit();
// 创建整数校验器,限制输入整数
QIntValidator *validator = new QIntValidator(lineEdit);
lineEdit->setValidator(validator);
// 设置窗口布局
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(comboBox);
setLayout(layout);
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
// 创建并显示窗口
MyWidget window;
window.resize(300, 100);
window.show();
return app.exec();
}
相关推荐
一、概述
QT是一个跨平台的C++库,主要用来开发图形界面(GUI)程序,它支持多种操作系统 ,如Windows、Linux、Android、ios、gnx、vxworks。
官网:https://w
一、预览
通过窗体-预览 或者 ctrl+R打开预览。
可以使用不同的内置风格、新式表、设备皮肤进行预览。在应用程序可以通过调用QApplication::setStyleSheet()来加载样式表实
代码编辑:
Ctrl + Space: 激活代码补全
Ctrl + /: 注释/取消注释当前行或选定代码
Ctrl + I: 自动缩进选定代码
Ctrl + Shift + U: 转换选定文本为大写
在 Qt 中,输出变量值通常是用于调试目的,你可以使用多种方法来打印或显示变量的值。以下是一些常见的方法:
1、使用 qDebug:
qDebug 是 Qt 中用于输出调试信息的宏。它可以将输出发送到
在 Qt 中全局加载一个 TTF 字体文件并使用它,你可以在程序初始化时期,比如在 main 函数中加载字体。以下是加载全局字体的步骤:
加载字体文件:使用 QFontDatabase::addAp
一、对于窗口 (QMainWindow, QDialog, 等):
1、move() 方法:
使用 move() 方法可以将窗口移动到屏幕上的指定位置。
QMainWindow *window = n
Qt框架中使用new关键字创建的对象通常需要手动释放,但是Qt提供了一种父子关系机制,可以自动管理对象的内存。当你使用new创建一个对象并将其分配给一个父QObject时,这个对象将会在父对象被销毁时
在Qt中,border-radius 在样式表中不会对顶层窗口生效。顶层窗口是指没有父窗口的窗口,通常是您的应用程序的主窗口或者独立的弹出窗口。由于安全性和平台兼容性的原因,很多样式表中的属性在顶层窗
在Qt中,connect函数用于连接信号和槽。从Qt 5开始,你可以使用C++11的lambda表达式作为槽函数,这样可以使你的代码更加简洁,尤其是当你想要对信号进行一些简单的处理时,而不想去定义一个
1. 定义全局常量
全局常量可以在一个头文件中使用 const 关键字或 #define 预处理器来定义:
// constants.h
#ifndef CONSTANTS_H
#define CO