2.4.2QT之comboBox下拉框


文章目录

  • 2.4.2QT之comboBox下拉框
  • 前言
  • 2.4.2.1 QComboBo 常用的成员函数
  • 2.4.2.2QComboBox 常用的槽函数
  • 2.4.2.3QComboBox 常用的信号
  • 示例
  • myCombobox.pro文件
  • widget,h文件
  • main.cpp文件
  • widget.cpp文件
  • widget.ui文件

  • 前言

    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>
    
    

    物联沃分享整理
    物联沃-IOTWORD物联网 » 2.4.2QT之comboBox下拉框

    发表评论