2.4.2QT之comboBox下拉框
2.4.2QT之comboBox下拉框
文章目录
前言
QComboBo 以列表的方式提供一个下拉选项提供给用户显示,节省屏幕占用空间。下拉组合框中数据都可以修改编辑,可以包含图片以及字符串文本。Word 文档软件中的字体选择框、字号选择框、颜色选择框都是使用ComboBo 实现。
提示:以下是本篇文章正文内容,下面案例可供参考
2.4.2.1 QComboBo 常用的成员函数
1、添加条目信息
void QComboBox::addItem(const QString &text, const QVariant &userData = QVariant())
void QComboBox::addItem(const QIcon &icon, const QString &text, const QVariant &userData = QVariant())
void QComboBox::addItems(const QStringList &texts)
addItem 是一个重载函数,可以单独添加字符串文本,也可以添加图标.
2、返回所有条目的数量
int count() const
3、设置选项框显示的图标尺寸
QSize iconSize() const
void setIconSize(const QSize & size)
4、返回指定条目的图标或者字符串
QString QComboBox::itemText(int index) const
QIcon QComboBox::itemIcon(int index) const
5、给指定条目设置图标和文本
void QComboBox::setItemIcon(int index, const QIcon & icon)
void QComboBox::setItemText(int index, const QString & text)
6、设置选项是否可以编辑
bool isEditable() const
void setEditable(bool editable)
默认情况下该属性为 false,不能编辑。
7、设置当前编辑框显示的文本
QString currentText() const //返回当前编辑框的字符串文本
void setCurrentText(const QString &text) //设置当前显示的字符串文本
使用 currentText 属性的前提是当前的 QComboBox 必须支持文本属性(setCurrentText(true))
8、设置 QComboBox 支持显示的最大条目数量。默认是 2147483647 个
int maxCount() const
void setMaxCount(int max)
9、设置指定选项的显示文本和图标
void setItemText(int index, const QString &text);
void setItemIcon(int index, const QIcon &icon);
void setItemData(int index, const QVariant &value, int role = Qt::UserRole);
int index 表示条目选项的索引值。索引从 0 开始计算。
10、插入新的条目选项
void insertItem(int index, const QString &text, const QVariant &userData = QVariant());
void insertItem(int index, const QIcon &icon, const QString &text,const QVariant &userData = QVariant());
void insertItems(int index, const QStringList &texts);
int index 表示条目选项的索引值。
2.4.2.2QComboBox 常用的槽函数
void clear(); 清除所有条目选项
void clearEditText(); 清除文本显示
void setEditText(const QString &text); 设置选项框显示的文本
void setCurrentIndex(int index); 设置当前选项的节点索引
void setCurrentText(const QString &text); 设置当前选项的文本
2.4.2.3QComboBox 常用的信号
1、editTextChanged 信号:编辑框的文本发生改变时发出(QComboBox 需要可编辑)。形参保存改变后的新文本。
void editTextChanged(const QString &);
2、activated 信号:当用户在下拉列表框中选择了一个选项发出。形参保存选中选项的节点索引值或文本。
void activated(int index);
void activated(const QString &text)
注意:即使选中的选项没有发生改变(本次选择与之前的选择相同)activated 信号也会发出。
3、currentTextChanged 信号:当编辑框的文本发生改变时发出。形参保存改变后的新文本。
void currentTextChanged(const QString &text)
注意:该信号对应 currentText 属性
4、currentIndexChanged 信号:点击某一个选项时发出。形参保存选中选项的节点索引值或文本。
void currentIndexChanged(int index)
void currentIndexChanged(const QString &text)
注意:如果选项没有发生改变(本次选择与之前的选择相同)不会发出 currentIndexChanged 信号。
5、highlighted 信号:当光标选中选项时发出,不需要点击选项。形参保存选中选项的节点索引值或文本。
void highlighted(int index)
void highlighted(const QString &text)
示例
1、ui界面设计
控件:Lable标签(机器状态,用户账号,用户密码),Combobox下拉框(机器状态,用户账号),LineEdit单行编辑器(用户密码),PushButton按钮(连接)
2、设计效果
3、代码
myCombobox.pro文件
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11
# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp \
widget.cpp
HEADERS += \
widget.h
FORMS += \
widget.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
RESOURCES += \
image.qrc
widget,h文件
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private slots:
void on_pushButton_connect_clicked();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
main.cpp文件
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
widget.cpp文件
#include "widget.h"
#include "ui_widget.h"
#include<QComboBox>//使用下拉框需要的头文件
#include<QDebug>//打印输出
#include<QMessageBox>//消息对话框
#include<QIcon>//图标的头文件
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//1、创建机器状态列表
QStringList list;
ui->comboBox_state->addItem(QIcon(":/image/creative-commons-nd-line.png"),"开始");
ui->comboBox_state->addItem(QIcon(":/image/forbid-fill.png"),"暂停");
ui->comboBox_state->addItem(QIcon("::/image/shut-down-fill.png"),"停止");
//2、创建待选的账号列表
list<<"123123"<<"3534535"<<"453252";
ui->comboBox_number->addItems(list);//添加显示的条目
ui->comboBox_number->setEditable(true);//设置选项可编辑属性
//设置密码显示模式
ui->lineEdit_password->setEchoMode(QLineEdit::Password);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_connect_clicked()
{
//实际运用中可以通过 QCryptographicHash 类进行加密
QString password_info;
password_info+=tr("账号:");
password_info+=ui->comboBox_number->currentText();
password_info+="\n";
password_info+=tr("密码:");
password_info+=ui->lineEdit_password->text();
password_info+="\n";
QMessageBox::information(this, tr("登录信息"), password_info,QMessageBox::Ok);
}
widget.ui文件
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Widget</class>
<widget class="QWidget" name="Widget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>Widget</string>
</property>
<widget class="QWidget" name="">
<property name="geometry">
<rect>
<x>60</x>
<y>81</y>
<width>351</width>
<height>161</height>
</rect>
</property>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>机器状态:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="comboBox_state"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>用户账号:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="comboBox_number"/>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>用户密码:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="lineEdit_password"/>
</item>
<item row="3" column="0" colspan="2">
<widget class="QPushButton" name="pushButton_connect">
<property name="text">
<string>连接</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections/>
</ui>
更多推荐
所有评论(0)