2.4.2QT之comboBox下拉框

2023-11-18

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>


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2.4.2QT之comboBox下拉框 的相关文章

  • Tensorflow 中的自定义资源

    由于某些原因 我需要为 Tensorflow 实现自定义资源 我试图从查找表实现中获得灵感 如果我理解得好的话 我需要实现3个TF操作 创建我的资源 资源的初始化 例如 在查找表的情况下填充哈希表 执行查找 查找 查询步骤 为了促进实施 我
  • 赋值运算符和复制构造函数有什么区别?

    我不明白C 中赋值构造函数和复制构造函数之间的区别 是这样的 class A public A cout lt lt A A lt lt endl The copy constructor A a b The assignment cons
  • 获取两个字符串之间的公共部分c# [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要的是获取两个单词之间的共同部分并获取差异 例子 场景1 word1 感言 word2 Test 将返回 公共部分Test 不同之
  • 捕获 foreach 条件中抛出的异常

    我有一个foreach在 foreach 本身的条件下循环期间中断的循环 有没有办法try catch抛出异常然后继续循环的项 这将运行几次 直到异常发生然后结束 try foreach b in bees exception is in
  • 使用实体框架从集合中删除项目

    我正在使用DDD 我有一个 Product 类 它是一个聚合根 public class Product IAggregateRoot public virtual ICollection
  • Linux TUN/TAP:无法从 TAP 设备读回数据

    问题是关于如何正确配置想要使用 Tun Tap 模块的 Linux 主机 My Goal 利用现有的路由软件 以下为APP1和APP2 但拦截并修改其发送和接收的所有消息 由Mediator完成 我的场景 Ubuntu 10 04 Mach
  • ASP .NET MVC,创建类似路由配置的永久链接

    我需要帮助在 MVC 网站中创建类似 URL 路由的永久链接 Slug 已设置为 www xyz com profile slug 代码为 routes MapRoute name Profile url profile slug defa
  • 在 Xcode4 中使用 Boost

    有人设置 C Xcode4 项目来使用 Boost 吗 对于一个简单的 C 控制台应用程序 我需要在 Xcode 中设置哪些设置 Thanks 用这个来管理它 和这个
  • 调试内存不足异常

    在修复我制作的小型 ASP NET C Web 应用程序的错误时 我遇到了 OutOfMemoryException 没有关于在哪里查看的提示 因为这是一个编译时错误 如何诊断此异常 我假设这正是内存分析发挥作用的地方 有小费吗 Thank
  • 如何在 VS 中键入时显示方法的完整文档?

    标题非常具有描述性 是否有任何扩展可以让我看到我正在输入的方法的完整文档 我想查看文档 因为我可以在对象浏览器中看到它 其中包含参数的描述和所有内容 而不仅仅是一些 摘要 当然可以选择查看所有覆盖 它可能是智能感知的一部分 或者我不知道它并
  • 为什么密码错误会导致“填充无效且无法删除”?

    我需要一些简单的字符串加密 所以我编写了以下代码 有很多 灵感 来自here http www codeproject com KB security DotNetCrypto aspx create and initialize a cr
  • 单元测试失败,异常代码为 c0000005

    我正在尝试使用本机单元测试项目在 Visual Studios 2012 中创建单元测试 这是我的测试 TEST METHOD CalculationsRoundTests int result Calculations Round 1 0
  • 范围和临时初始化列表

    我试图将我认为是纯右值的内容传递到范围适配器闭包对象中 除非我将名称绑定到初始值设定项列表并使其成为左值 否则它不会编译 这里发生了什么 include
  • 组合框项目为空但数据源已满

    将列表绑定到组合框后 其 dataSource Count 为 5 但组合框项目计数为 0 怎么会这样 我习惯了 Web 编程 而且这是在 Windows 窗体中进行的 所以不行combo DataBind 方法存在 这里的问题是 我试图以
  • C# 创建数组的数组

    我正在尝试创建一个将使用重复数据的数组数组 如下所示 int list1 new int 4 1 2 3 4 int list2 new int 4 5 6 7 8 int list3 new int 4 1 3 2 1 int list4
  • 如何排列表格中的项目 - MVC3 视图 (Index.cshtml)

    我想使用 ASP NET MVC3 显示特定类型食品样本中存在的不同类型维生素的含量 如何在我的视图 Index cshtml 中显示它 an example 这些是我的代码 table tr th th foreach var m in
  • 从匿名类型获取值

    我有一个方法如下 public void MyMethod object obj implement 我这样称呼它 MyMethod new myparam waoww 那么我该如何实施MyMethod 获取 myparam 值 Edit
  • 为什么我使用google'smtp'无法发送电子邮件?

    我有以下程序使用 smtp gmail com 587 发送电子邮件 namespace TestMailServer class Program static void Main string args MailMessage mail
  • 同时从多个流中捕获、最佳方法以及如何减少 CPU 使用率

    我目前正在编写一个应用程序 该应用程序将捕获大量 RTSP 流 在我的例子中为 12 个 并将其显示在 QT 小部件上 当我超过大约 6 7 个流时 问题就会出现 CPU 使用率激增并且出现明显的卡顿 我认为它不是 QT 绘制函数的原因是因
  • boost::program_options:带有固定和可变标记的参数?

    是否可以在 boost program options 中使用此类参数 program p1 123 p2 234 p3 345 p12 678 即 是否可以使用第一个标记指定参数名称 例如 p 后跟一个数字 是动态的吗 我想避免这种情况

随机推荐

  • 华为OD机试真题-增强的strstr-2023年OD统一考试(B卷)

    题目描述 C 语言有一个库函数 char strstr const char haystack const char needle 实现在字符串 haystack 中查找第一次出现字符串 needle 的位置 如果未找到则返回 null 现
  • Android最简洁的自动换行布局组件

    自动换行是一种布局特性 理所当然应该在布局组件中实现 我们基于ViewGroup实现了最简洁和稳定的自动换行布局组件AutoLinefeedLayout 该组件无需特别设置 只要将孩子塞给它 就会自动换行显示 无任何限制 源码如下 pack
  • [苹果开发者账号]01 使用Apple Developer app注册提示:未能验证证件

    1 登录https developer apple com 2 点击Learn More 3 使用自己的iPhone 到AppStore下载Apple Developer app Apple Developer app使用帮助 https
  • 【高效数据结构——位图bitmap】

    初识位图bitmap 位图 Bitmap 是一种用于表示和操作位 bit 的数据结构 它是由一系列二进制位 0 或 1 组成的序列 每个位都可以单独访问和操作 位图常用于以下情况 压缩存储 位图可以有效地存储大量的布尔值信息 每个位只占用一
  • CSS生成的迷宫

  • unity shader可视化工具——Shader Graph

    unity shader可视化工具 Shader Graph 前言 一 Shader Graph介绍 什么是Shader Graph 二 Shader Graph安装配置 1 新工程中使用Shader Graph 2 旧工程中使用Shade
  • 将微服务部署到 Azure Kubernetes 服务 (AKS) 实践

    本文是对 NET Tutorial Deploy a microservice to Azure 的翻译和实践 入门级踩坑实践 k8s 大佬请回避 以免浪费您宝贵的时间 介绍 本文的目的是 通过使用 DockerHub 和 Azure Ku
  • 爬取招聘数据进行数据分析及可视化

    爬取招聘信息 对数据分析行业目前就业形式进行数据分析 大体流程如下 1 通过requests模块获取指定的某招聘信息 2 用pandas进行数据清洗 3 用matplotlib进行数据的可视化 导入需要用到的包 import request
  • python icon生成小工具

    在项目制作的过程中 有可能会出现一张图片需要有不同的大小去适应不同的设备和位置时 手动去一个个制作比较麻烦 本人通过网上学习粗略敲了一段python脚本 可能有考虑不周之处还请指出 文底有下载链接 old file new file new
  • 将代码上传到gitee

    1 新建gitee仓库 直接点击创建即可 2 到idea点击vcs gt Enable 3 项目点击右键 选中下列 4 选中项目右键 复制进去链接 5 项目右键 选中下列的文件 6 提交 push push 7 去gitee刷新文件已经上传
  • 框架的注解

    文章目录 一 mybatis 1 MyBatis的常用注解 2 MyBatis的注解实现复杂映射开发 二 Spring 1 Spring原始注解 2 Spring新注解 3 注解配置 AOP 详解 三 springMVC 1 Request
  • 爬山算法启发

    爬山算法 是一种局部择优的方法 采用启发式方法 是对深度优先探索的一种改进 它利用反馈信息帮助生成解的决策 属于人工智能算法的一种 相关术词解释 1 启发式方法 简化虚拟机和简化行为判断引擎的结合 简单讲就是提前对某项行为进行检测和判断 拥
  • win10系统安装Nginx

    Nginx是一款自由的 开源的 高性能的HTTP服务器和反向代理服务器 同时也提供了IMAP POP3 SMTP服务 Nginx可以进行反向代理 负载均衡 HTTP服务器 动静分离 正向代理等操作 因为最近在公司使用到了Nginx 第一步
  • nginx目录结构和配置文件详解

    nginx目录结构和配置文件详解 0x00 Nginx 目录结构 Nginx 文件结构比较简洁 主要包括配置文件和二进制可执行程序 通过安装包形式安装的 nginx 文件结构跟各 Linux 发行版目录规则存放配置文件和二进制文件的位置 目
  • 3 Minute Thesis (3MT)

    1 定义 资料来源 https zhuanlan zhihu com p 63325983 utm id 0 3MT原则 要把博士课题介绍给一个受过高等教育但没有专业背景的人并阐述它的重要性 定义 三分钟论文 3MT 是一个学术比赛 帮助当
  • k8s问题 CrashLoopBackOff

    我们创建资源发现资源出现CrashLoopBackOff解决 CrashLoopBackOff 告诉我们 Kubernetes 正在尽力启动这个 Pod 但是一个或多个容器已经挂了 或者正被删除 root localhost kubectl
  • R语言09-单变量绘图(频数分布直方图/折线图)

    使用ggplot绘图系统 运用qplot ggplot两种方式进行单变量绘图示例 直方图 qplot 系统默认柱状图 library ggplot2 qplot x dob day data users 传入参数x和数据集 ggplot 与
  • MIPI CSI-2学习

    CSI Camera Serial Interface 定义了摄像头外设与主机控制器之间的接口 旨在确定摄像头与主机控制器在移动应用中的标准 关键词描述 缩写 解释 CCI Camera Control Interface 物理层组件 通常
  • 1-Axure

    Axure学习 一 原型图 1 原型图作用 描述互联网产品设计的文档 项目中 与相关部门沟通需求的工具 研发 设计 敏捷开发中 简化版的需求文档 PRD MRD 2 原型图种类 线框图 制作快速 低成本描述方案 给设计更多空间 高保真原型图
  • 2.4.2QT之comboBox下拉框

    2 4 2QT之comboBox下拉框 文章目录 2 4 2QT之comboBox下拉框 前言 2 4 2 1 QComboBo 常用的成员函数 2 4 2 2QComboBox 常用的槽函数 2 4 2 3QComboBox 常用的信号