• qt常用控件1


    QLabel

    QLabel用于显示文本或图像。不提供用户交互功能。标签的视觉外观可以通过多种方式进行配置,并且可用于为另一个小组件指定焦点助记键。

    常用API介绍:

    获取对应的文本信息:

    设置对其方式:

    设置能否进行换行

    获取及设置标签上的图像

    其他函数可去查看帮助文档,下面演示上面的几种函数:

    例如:

    1. #include "mainwindow.h"
    2. #include "ui_mainwindow.h"
    3. #include
    4. #include
    5. #include
    6. MainWindow::MainWindow(QWidget *parent)
    7. : QMainWindow(parent)
    8. , ui(new Ui::MainWindow)
    9. {
    10. ui->setupUi(this);
    11. }
    12. MainWindow::~MainWindow()
    13. {
    14. delete ui;
    15. }
    16. void MainWindow::on_G11_clicked()
    17. {
    18. ui->L1->setText(QTime::currentTime().toString());//设置当前文本
    19. }
    20. void MainWindow::on_G12_clicked()
    21. {
    22. QMessageBox::information(this,"当前标签内容:",ui->L1->text());//获取当前文本
    23. }
    24. void MainWindow::on_G21_clicked()
    25. {
    26. ui->L2->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
    27. }
    28. void MainWindow::on_G22_clicked()
    29. {
    30. ui->L2->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
    31. }
    32. void MainWindow::on_G23_clicked()
    33. {
    34. ui->L2->setAlignment(Qt::AlignCenter);//设置居中对齐
    35. }
    36. int flag=0;
    37. void MainWindow::on_G31_clicked()//显示图片
    38. {
    39. QPixmap img;
    40. if(flag==0)
    41. {
    42. img.load(":/icon/apple.ico");
    43. flag++;
    44. }
    45. else
    46. {
    47. img.load(":/icon/strawberry.ico");
    48. flag--;
    49. }
    50. ui->L3->setPixmap(img);
    51. ui->L3->setScaledContents(false);//设置图片不要缩放
    52. ui->L3->setAlignment(Qt::AlignCenter);
    53. }

     演示效果:

    QLineEdit

    行编辑允许用户使用有用的编辑功能集合输入和编辑单行纯文本,包括撤消和重做、剪切和粘贴以及拖放 。

    常用API的功能有:

    设置占位字符,读写控制,回显模式格式控制等。下面对这些函数进行演示:

     

    信号: 

    textChanged:当文本内容发生改变时发出

    editingFinished:当内容输入完毕时(按了回车键,焦点转移时)

    例如:

    1. #include "mainwindow.h"
    2. #include "ui_mainwindow.h"
    3. #include
    4. MainWindow::MainWindow(QWidget *parent)
    5. : QMainWindow(parent)
    6. , ui(new Ui::MainWindow)
    7. {
    8. ui->setupUi(this);
    9. }
    10. MainWindow::~MainWindow()
    11. {
    12. delete ui;
    13. }
    14. void MainWindow::on_G11_clicked()
    15. {
    16. QMessageBox::information(this,"回显模式内容",ui->L1->text());
    17. }
    18. void MainWindow::on_G12_clicked()
    19. {
    20. ui->L1->clear();
    21. ui->L1->setEchoMode(QLineEdit::Normal);//正常模式
    22. ui->L1->setPlaceholderText("正常模式");
    23. }
    24. void MainWindow::on_G13_clicked()
    25. {
    26. ui->L1->clear();
    27. ui->L1->setEchoMode(QLineEdit::Password);
    28. ui->L1->setPlaceholderText("密码模式");
    29. }
    30. void MainWindow::on_G14_clicked()
    31. {
    32. ui->L1->clear();
    33. ui->L1->setEchoMode(QLineEdit::PasswordEchoOnEdit);
    34. ui->L1->setPlaceholderText("失去焦点便密码模式");
    35. }
    36. void MainWindow::on_G15_clicked()
    37. {
    38. ui->L1->clear();
    39. ui->L1->setEchoMode(QLineEdit::NoEcho);
    40. ui->L1->setPlaceholderText("不回显模式");
    41. }
    42. void MainWindow::on_G21_clicked()
    43. {
    44. QMessageBox::information(this,"读写控制输出内容",ui->L2->text());
    45. }
    46. void MainWindow::on_G22_clicked()
    47. {
    48. ui->L2->setReadOnly(false);
    49. ui->L2->setPlaceholderText("可读可写");
    50. }
    51. void MainWindow::on_G23_clicked()
    52. {
    53. ui->L2->setReadOnly(true);
    54. ui->L2->setPlaceholderText("只读模式");
    55. }
    56. void MainWindow::on_G24_clicked()
    57. {
    58. ui->L2->setEnabled(false);
    59. }
    60. void MainWindow::on_G25_clicked()
    61. {
    62. ui->L2->setEnabled(true);
    63. }
    64. //格式控制
    65. void MainWindow::on_G31_clicked()
    66. {
    67. ui->L3->setInputMask("");
    68. }
    69. void MainWindow::on_G32_clicked()//只能输入0-9的数字
    70. {
    71. ui->L3->setInputMask("99999999999;#");
    72. }
    73. void MainWindow::on_G33_clicked()
    74. {
    75. ui->L3->setInputMask(">AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;*");//输入的字母会转为大写
    76. }
    77. void MainWindow::on_LL4_textChanged(const QString &arg1)
    78. {
    79. int sum=arg1.toInt()+ui->LL5->text().toInt();
    80. ui->LL6->setText(QString::number(sum));
    81. }
    82. void MainWindow::on_LL5_textChanged(const QString &arg1)
    83. {
    84. int sum=arg1.toInt()+ui->LL4->text().toInt();
    85. ui->LL6->setText(QString::number(sum));
    86. }
    87. void MainWindow::on_LL1_editingFinished()
    88. {
    89. int sum=ui->LL1->text().toInt()+ui->LL2->text().toInt();
    90. ui->LL3->setText(QString::number(sum));
    91. }
    92. void MainWindow::on_LL2_editingFinished()
    93. {
    94. int sum=ui->LL1->text().toInt()+ui->LL2->text().toInt();
    95. ui->LL3->setText(QString::number(sum));
    96. }

    结果:

    QComboBox

    QComboBox 提供了一种以占用最小屏幕空间的方式向用户显示选项列表的方法。

    常用API:

    获取当前文本或索引,给对应条目添加图标,信息

     插入条目:可选着插入一个或者多个,还可指定插入策略

     信号:

    案例: 

    代码:

    1. #include
    2. QT_BEGIN_NAMESPACE
    3. namespace Ui { class Widget; }
    4. QT_END_NAMESPACE
    5. class Widget : public QWidget
    6. {
    7. Q_OBJECT
    8. public:
    9. Widget(QWidget *parent = nullptr);
    10. ~Widget();
    11. private:
    12. Ui::Widget *ui;
    13. private slots:
    14. void onCboUniversityChanged(int index);
    15. void onCboProvinceChanged(int index);
    16. void onCboCityChanged(int index);
    17. void onLineEditChanged(QString s);
    18. void Show();
    19. };
    20. #endif // WIDGET_H
    1. #include "widget.h"
    2. #include "ui_widget.h"
    3. #include
    4. #include
    5. //当省份改变时,将对应省份城市的城市一次添加到城市列表中
    6. QStringList gdCityList = {"广州市", "深圳市", "珠海市", "东莞市"};
    7. QStringList zjCityList = {"杭州市", "宁波市", "温州市", "绍兴市"};
    8. QStringList sdCityList = {"济南市", "青岛市", "烟台市", "威海市"};
    9. QStringList hbCityList = {"石家庄市", "保定市", "廊坊市", "衡水市"};
    10. QStringList nmCityList = {"呼和浩特市", "包头市", "呼伦贝尔市", "赤峰市"};
    11. Widget::Widget(QWidget *parent)
    12. : QWidget(parent)
    13. , ui(new Ui::Widget)
    14. {
    15. ui->setupUi(this);
    16. // 添加省份
    17. ui->cboProvince->addItem("广东省");
    18. ui->cboProvince->addItem("浙江省");
    19. ui->cboProvince->addItem("山东省");
    20. ui->cboProvince->addItem("河北省");
    21. ui->cboProvince->addItem("内蒙古自治区省");
    22. // 为省份条目添加图标
    23. ui->cboProvince->setItemIcon(0, QIcon(":/icon/apple.ico"));
    24. ui->cboProvince->setItemIcon(1, QIcon(":/icon/banana.ico"));
    25. ui->cboProvince->setItemIcon(2, QIcon(":/icon/orange.ico"));
    26. ui->cboProvince->setItemIcon(3, QIcon(":/icon/peach.ico"));
    27. ui->cboProvince->setItemIcon(4, QIcon(":/icon/strawberry.ico"));
    28. // 默认选中第一项-广东省
    29. ui->cboProvince->setCurrentIndex(0);
    30. // 添加城市
    31. ui->cboCity->addItems(gdCityList);
    32. // 信号槽
    33. connect(ui->cboUniversity, SIGNAL(currentIndexChanged(int)), this, SLOT(onCboUniversityChanged(int)));
    34. connect(ui->cboProvince, SIGNAL(currentIndexChanged(int)), this, SLOT(onCboProvinceChanged(int)));
    35. connect(ui->cboCity, SIGNAL(currentIndexChanged(int)), this, SLOT(onCboCityChanged(int)));
    36. // 当文本框内容变化时,更新结果
    37. connect(ui->leName, &QLineEdit::textChanged, this, &Widget::onLineEditChanged);
    38. }
    39. Widget::~Widget()
    40. {
    41. delete ui;
    42. }
    43. void Widget::onCboUniversityChanged(int index)
    44. {
    45. // 获取姓名、大学、省份、城市
    46. Show();
    47. }
    48. void Widget::onCboProvinceChanged(int index)
    49. {
    50. // 先将city对应的列表清空
    51. ui->cboCity->clear();
    52. switch (index) {
    53. case 0:
    54. ui->cboCity->addItems(gdCityList);
    55. break;
    56. case 1:
    57. ui->cboCity->addItems(zjCityList);
    58. break;
    59. case 2:
    60. ui->cboCity->addItems(sdCityList);
    61. break;
    62. case 3:
    63. ui->cboCity->addItems(hbCityList);
    64. break;
    65. case 4:
    66. ui->cboCity->addItems(nmCityList);
    67. break;
    68. default:
    69. break;
    70. }
    71. // 获取姓名、大学、省份、城市
    72. Show();
    73. }
    74. void Widget::onCboCityChanged(int index)
    75. {
    76. // 获取姓名、大学、省份、城市
    77. Show();
    78. }
    79. void Widget::onLineEditChanged(QString s)
    80. {
    81. // 获取姓名、大学、省份、城市
    82. Show();
    83. }
    84. void Widget::Show()
    85. {
    86. QString name = ui->leName->text();
    87. QString university = ui->cboUniversity->currentText();
    88. QString province = ui->cboProvince->currentText();
    89. QString city = ui->cboCity->currentText();
    90. ui->leResult->setText(name + "毕业于" + university + ", 来自" + province + city);
    91. }

     QListWidget

    QListWidget 是一个方便类,它提供类似于 QListView 提供的列表视图,但具有用于添加和删除项目的经典基于项目的界面。QListWidget 使用内部模型来管理列表中的每个 QListWidgetItem。

    常用API函数:

    显示模式有列表模式与图标模式,添加与删除条目

     

    信号:该条目被单击或双击时

    案例: 

    1. #include
    2. #include
    3. QStringList iconStringList = {
    4. ":/icon/apple.ico",
    5. ":/icon/banana.ico",
    6. ":/icon/orange.ico",
    7. ":/icon/peach.ico",
    8. ":/icon/strawberry.ico"
    9. };
    10. Widget::Widget(QWidget *parent)
    11. : QWidget(parent)
    12. , ui(new Ui::Widget)
    13. {
    14. ui->setupUi(this);
    15. // 默认是列表模式
    16. mBtnGroup = new QButtonGroup(this);
    17. mBtnGroup->addButton(ui->rbListMode, 0);
    18. mBtnGroup->addButton(ui->rbIconMode, 1);
    19. connect(ui->rbListMode, &QRadioButton::clicked, this, &Widget::onRadioButtonClicked);
    20. connect(ui->rbIconMode, &QRadioButton::clicked, this, &Widget::onRadioButtonClicked);
    21. ui->rbListMode->setChecked(true);
    22. ui->lwProvince->setViewMode(QListView::ListMode);
    23. // 条目单击和双击的信号槽
    24. connect(ui->lwProvince, &QListWidget::itemClicked, this, &Widget::onItemClicked);
    25. connect(ui->lwProvince, &QListWidget::itemDoubleClicked, this, &Widget::onItemDoubleClicked);
    26. // add/insert/delete
    27. connect(ui->btnAdd, &QPushButton::clicked, this, &Widget::onBtnAddClicked);
    28. connect(ui->btnInsert, &QPushButton::clicked, this, &Widget::onBtnInsertClicked);
    29. connect(ui->btnDelete, &QPushButton::clicked, this, &Widget::onBtnDeleteClicked);
    30. }
    31. Widget::~Widget()
    32. {
    33. delete ui;
    34. }
    35. // 切换显示模式:列表模式、图标模式
    36. void Widget::onRadioButtonClicked()
    37. {
    38. int checkedId = mBtnGroup->checkedId();
    39. if(checkedId == 0) {
    40. ui->lwProvince->setViewMode(QListView::ListMode);
    41. } else if(checkedId == 1) {
    42. ui->lwProvince->setViewMode(QListView::IconMode);
    43. }
    44. }
    45. // 条目单击时,显示到文本框
    46. void Widget::onItemClicked(QListWidgetItem *item)
    47. {
    48. ui->leCurrentItem->setText(item->text());
    49. }
    50. // 双击条目时,变为可编辑模式
    51. void Widget::onItemDoubleClicked(QListWidgetItem *item)
    52. {
    53. item->setFlags(Qt::ItemIsEditable | Qt::ItemIsSelectable | Qt::ItemIsEnabled);
    54. }
    55. // 在最后插入
    56. void Widget::onBtnAddClicked()
    57. {
    58. int iconIndex = QRandomGenerator::global()->generate()%5; //产生5以内的随机数 0-4
    59. qDebug() << iconIndex;
    60. QIcon icon(iconStringList[iconIndex]);
    61. QString text = ui->leInput->text();
    62. QListWidgetItem* item = new QListWidgetItem(icon, text);
    63. ui->lwProvince->addItem(item);
    64. }
    65. // 在当前行之前插入
    66. void Widget::onBtnInsertClicked()
    67. {
    68. int iconIndex = QRandomGenerator::global()->generate()%5; //产生5以内的随机数 0-4
    69. QIcon icon(iconStringList[iconIndex]);
    70. QString text = ui->leInput->text();
    71. QListWidgetItem* item = new QListWidgetItem(icon, text);
    72. int currentRow = ui->lwProvince->currentRow();
    73. ui->lwProvince->insertItem(currentRow, item);
    74. }
    75. // 删除选定的条目
    76. void Widget::onBtnDeleteClicked()
    77. {
    78. #if 0
    79. // 方法一
    80. QListWidgetItem* item = ui->lwProvince->currentItem();
    81. ui->lwProvince->removeItemWidget(item);
    82. delete item;
    83. #else
    84. // 方法二
    85. int row = ui->lwProvince->currentRow();
    86. QListWidgetItem* item = ui->lwProvince->takeItem(row);
    87. delete item;
    88. #endif
    89. }

  • 相关阅读:
    7-6 Python字典-学生成绩统计
    2022年6月电子学会Python等级考试试卷(四级)答案解析
    SpringMVC
    0-1 背包问题
    【双指针-简单】977. 有序数组的平方
    探索工业路由器如何助力无人驾驶方案的突破性解析
    Visual Studio 调试时加载符号慢
    文艺复兴科技
    C语言的结构体的认识
    网络安全(黑客)——自学2024
  • 原文地址:https://blog.csdn.net/m0_64397669/article/details/133418469