0


Qt学习总结之QComboBox

一.简介

1.下拉框是一个组合控件(包含一个文本显示控件和一个按钮)。它默认显示最小的控件给用户来操作,并且可以用下拉选择的界面提供给用户更多的预置选项。
2.它是直接继承自QWidget。

如下:
在这里插入图片描述

二.功能作用

1.构造函数。

可以直接实例化,不用传递参数。

  1. m_combox =newQComboBox(this);

2.数据操作

数据的操作主要分对数据项的增删改和一些其他的操作
a.增加项目
下拉框的内容有两种增加方式:追加和指定位置添加。

  1. m_combox->addItem("星期四");//追加项目
  2. m_combox->insertItem(2,"星期五");//指定位置添加项目

如下:

在这里插入图片描述

还有一种增加的方法:批量增加。用一个可迭代的数据就可以

  1. QList<QString> com_list;
  2. com_list.append("星期一");
  3. com_list.append("星期二");
  4. com_list.append("星期三");
  5. m_combox->addItems(com_list);//批量添加项目

b.删除项目
删除项目很简单,只要指定需要删除的项目的所索引值就可以了

  1. m_combox->removeItem(1);//删除项目

c.改指定项目

  1. m_combox->setItemText(2,"这是修改项");//修改指定项目

d.编辑当前显示文本

如果没有指定的索引值或文本内容,则显示状态不变。

  1. m_combox->setCurrentIndex(5);//显示指定索引的项delay(5000);
  2. m_combox->setCurrentText("星期一");//按指定的内容去显示

e.插入分割线

  1. m_combox->insertSeparator(3);//插入分隔线

效果如下:
在这里插入图片描述
f.插入模型(树形表)

  1. QStandardItemModel *mode =newQStandardItemModel(this);
  2. QStandardItem *mode_item1 =newQStandardItem();
  3. QStandardItem *mode_item2 =newQStandardItem();
  4. QStandardItem *mode_item2_1 =newQStandardItem();
  5. mode_item1->setText("item1");
  6. mode_item2->setText("item2");
  7. mode_item2_1->setText("item2_1");
  8. mode_item2->appendRow(mode_item2_1);
  9. mode->clear();
  10. mode->appendRow(mode_item1);
  11. mode->appendRow(mode_item2);
  12. QTreeView *tree =newQTreeView(this);
  13. tree->setModel(mode);
  14. m_combox->setModel(mode);
  15. m_combox->setView(tree);

g:数据的限制

一般数据的限制是和可编辑的状态同时使用的,用了数据限制可以限制数据的条数。

  1. m_combox->setMaxCount(10);//设置最大存储项
  2. m_combox->setMaxVisibleItems(3);//设置最大显示项

h:常规操作

  1. m_combox->setDuplicatesEnabled(true);//是否可以被重复
  2. m_combox->setFrame(true);//设置框架边框
  3. QSize qsize;
  4. qsize.setWidth(10);
  5. qsize.setHeight(5);
  6. m_combox->setIconSize(qsize);//设置图标尺寸
  7. m_combox->iconSize();//获取图标尺寸

三.信号

1.条目改变

  1. QComboBox::activated();//

2.当前条目改变

  1. QComboBox::currentIndexChanged();//条目号发生变化QComboBox::currentTextChanged();//文本内容发生变化

3.高亮发生变化

  1. QComboBox::highlighted();//高亮条目发生变化

源码:
mainwindow.c

  1. #include"mainwindow.h"#include"ui_mainwindow.h"#include<QTime>#include<QStandardItemModel>#include<QStandardItem>#include<QTreeView>#include<QFileSystemModel>MainWindow::MainWindow(QWidget *parent):QMainWindow(parent),ui(new Ui::MainWindow){
  2. ui->setupUi(this);
  3. com_list.append("星期一");
  4. com_list.append("星期二");
  5. com_list.append("星期三");this->resize(800,600);
  6. m_combox =newQComboBox(this);
  7. m_combox->setGeometry(100,100,200,30);
  8. m_textedit =newQTextEdit(this);
  9. m_textedit->setGeometry(330,100,200,200);for(int i=0;i<com_list.length();i++){
  10. m_combox->addItem(com_list.at(i));}
  11. m_combox->addItem("星期四");//追加项目
  12. m_combox->insertItem(2,"星期五");//指定位置添加项目
  13. m_combox->addItems(com_list);//批量添加项目
  14. m_combox->removeItem(1);//删除项目
  15. m_combox->setItemText(2,"这是修改项");//修改指定项目connect(m_combox,&QComboBox::currentTextChanged,this,&MainWindow::slot_combox);}MainWindow::~MainWindow(){delete ui;}voidMainWindow::slot_combox(){
  16. QString str_temp = m_combox->currentText();
  17. m_textedit->setText("当前选择的是:"+str_temp);// if(!str_temp.compare(com_list.at(0))){// m_textedit->setText("today is "+str_temp);// }else if(!str_temp.compare(com_list.at(1))){// m_textedit->setText("today is "+str_temp);// }else if(!str_temp.compare(com_list.at(2))){// m_textedit->setText("today is "+str_temp);// }}voidMainWindow::delay(int msec){
  18. QTime dieTime =QTime::currentTime().addMSecs(msec);while(QTime::currentTime()< dieTime )QCoreApplication::processEvents(QEventLoop::AllEvents,100);}voidMainWindow::process(){
  19. m_combox->setCurrentIndex(5);//显示指定索引的项delay(5000);
  20. m_combox->setCurrentText("星期一");//按指定的内容去显示
  21. m_combox->insertSeparator(3);//插入分隔线
  22. QStandardItemModel *mode =newQStandardItemModel(this);
  23. QStandardItem *mode_item1 =newQStandardItem();
  24. QStandardItem *mode_item2 =newQStandardItem();
  25. QStandardItem *mode_item2_1 =newQStandardItem();
  26. mode_item1->setText("item1");
  27. mode_item2->setText("item2");
  28. mode_item2_1->setText("item2_1");
  29. mode_item2->appendRow(mode_item2_1);
  30. mode->clear();
  31. mode->appendRow(mode_item1);
  32. mode->appendRow(mode_item2);
  33. QTreeView *tree =newQTreeView(this);
  34. tree->setModel(mode);
  35. m_combox->setModel(mode);
  36. m_combox->setView(tree);
  37. m_combox->setCurrentIndex(0);
  38. m_combox->setFrame(false);
  39. m_combox->setMaxCount(10);//设置最大存储项
  40. m_combox->setMaxVisibleItems(3);//设置最大显示项//设置可重复性
  41. m_combox->setDuplicatesEnabled(true);//是否可以被重复
  42. m_combox->setFrame(true);//设置框架边框
  43. QSize qsize;
  44. qsize.setWidth(10);
  45. qsize.setHeight(5);
  46. m_combox->setIconSize(qsize);//设置图标尺寸
  47. m_combox->iconSize();//获取图标尺寸}

mainwindow.h

  1. #ifndefMAINWINDOW_H#defineMAINWINDOW_H#include<QMainWindow>#include<QComboBox>#include<QTextEdit>namespace Ui {classMainWindow;}classMainWindow:publicQMainWindow{
  2. Q_OBJECT
  3. public:explicitMainWindow(QWidget *parent =nullptr);~MainWindow();voidprocess();private slots:voidslot_combox();private:
  4. Ui::MainWindow *ui;
  5. QComboBox *m_combox;
  6. QTextEdit *m_textedit;
  7. QList<QString> com_list;voiddelay(int msec);};#endif// MAINWINDOW_H
标签: qt 学习 ui

本文转载自: https://blog.csdn.net/qq_27726087/article/details/126527928
版权归原作者 嵌入式小龙 所有, 如有侵权,请联系我们删除。

“Qt学习总结之QComboBox”的评论:

还没有评论