当前位置: 首页 > ops >正文

(17) 关于工具箱 QToolBox 的一个简单的范例使用,以了解其用法

(1)界面搭建

在这里插入图片描述

(2)控件间的逻辑关系实现

在这里插入图片描述

(3)重要的关于界面创建时 QToolBox 的使用 ui_widget . h 的内容如下,太长,给出源代码 :

#ifndef UI_WIDGET_H
#define UI_WIDGET_H#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QGridLayout>
#include <QtWidgets/QGroupBox>
#include <QtWidgets/QLabel>
#include <QtWidgets/QLineEdit>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QRadioButton>
#include <QtWidgets/QToolBox>
#include <QtWidgets/QVBoxLayout>
#include <QtWidgets/QWidget>QT_BEGIN_NAMESPACEclass Ui_Widget
{
public:QVBoxLayout *verticalLayout_3;QToolBox *toolBox;QWidget *page;QVBoxLayout *verticalLayout_2;QPushButton *pushButton;QLabel *label;QWidget *page_2;QVBoxLayout *verticalLayout;QGroupBox *groupBox;QGridLayout *gridLayout;QRadioButton *radioButtonBlack;QRadioButton *radioButtonRed;QLineEdit *lineEdit;void setupUi(QWidget * Widget) //形参是窗体 QWidget对象{if (Widget->objectName().isEmpty())Widget->setObjectName(QString::fromUtf8("Widget"));Widget->resize(292, 232);QFont font;font.setPointSize(14);Widget->setFont(font);                      //这是对本程序中 QWidget的设置Widget->setContextMenuPolicy(Qt::CustomContextMenu);verticalLayout_3 = new QVBoxLayout(Widget); //给窗体加个垂直布局verticalLayout_3->setObjectName(QString::fromUtf8("verticalLayout_3"));toolBox = new QToolBox(Widget);             //要加入到窗体里的工具箱 QToolBoxtoolBox->setObjectName(QString::fromUtf8("toolBox"));toolBox->setFrameShape(QFrame::Panel);      //这些边框的设置,是为了醒目一点toolBox->setFrameShadow(QFrame::Sunken);toolBox->setLineWidth(9);toolBox->setMidLineWidth(0);page = new QWidget();       //这些新的 QWidget是要加入到工具箱 QToolBox里的page->setObjectName(QString::fromUtf8("page"));page->setGeometry(QRect(0, 0, 262, 142));verticalLayout_2 = new QVBoxLayout(page);  //给 page1 设置个垂直布局verticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2"));pushButton = new QPushButton(page);        //给 page1添加个按钮pushButton->setObjectName(QString::fromUtf8("pushButton"));verticalLayout_2->addWidget(pushButton);   //把 按钮加入到 page1里label = new QLabel(page);                  //生成标签并加入到 page1里label->setObjectName(QString::fromUtf8("label"));verticalLayout_2->addWidget(label);toolBox->addItem(page, QString::fromUtf8("Page 1")); //把完整的 page1加入到工具箱里page_2 = new QWidget();                    //要加入到工具箱里的 page2page_2->setObjectName(QString::fromUtf8("page_2"));page_2->setGeometry(QRect(0, 0, 262, 142));verticalLayout = new QVBoxLayout(page_2);  //page2 也采用垂直布局verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));groupBox = new QGroupBox(page_2);          //把两个单选按钮放入一个容器里groupBox->setObjectName(QString::fromUtf8("groupBox"));gridLayout = new QGridLayout(groupBox);    //容器采用了网格布局gridLayout->setObjectName(QString::fromUtf8("gridLayout"));radioButtonBlack = new QRadioButton(groupBox);  //生成黑色字体按钮radioButtonBlack->setObjectName(QString::fromUtf8("radioButtonBlack"));radioButtonBlack->setChecked(true);gridLayout->addWidget(radioButtonBlack, 0, 0, 1, 1);radioButtonRed = new QRadioButton(groupBox);    //生成红色字体按钮,并加入容器radioButtonRed->setObjectName(QString::fromUtf8("radioButtonRed"));gridLayout->addWidget(radioButtonRed, 0, 1, 1, 1);lineEdit = new QLineEdit(groupBox);        //把行文本框也加入 QGroupBoxlineEdit->setObjectName(QString::fromUtf8("lineEdit"));gridLayout->addWidget(lineEdit, 1, 0, 1, 2);verticalLayout->addWidget(groupBox);       //把制作好的 QGroupBox加入 page2toolBox->addItem(page_2, QString::fromUtf8("Page 2")); //把 page2窗体加入工具箱verticalLayout_3->addWidget(toolBox);      //把工具箱加入大窗体中retranslateUi(Widget);toolBox->setCurrentIndex(1);               //让工具箱默认显示第一个页面QMetaObject::connectSlotsByName(Widget);   //允许通过函数名来连接信号与槽} // setupUivoid retranslateUi(QWidget *Widget){Widget    ->setWindowTitle(QCoreApplication::translate("Widget", "H", nullptr));groupBox  ->setTitle      (QString());pushButton      ->setText(QCoreApplication::translate("Widget","PushButton", nullptr));label           ->setText(QCoreApplication::translate("Widget","TextLabel" , nullptr));radioButtonBlack->setText(QCoreApplication::translate("Widget","\351\273\221", nullptr));radioButtonRed  ->setText(QCoreApplication::translate("Widget","\347\272\242", nullptr));lineEdit        ->setText(QCoreApplication::translate("Widget","\345\223\210\345\223\210\345\223\210", nullptr));toolBox ->setItemText(toolBox->indexOf(page),QCoreApplication::translate("Widget", "Page 1", nullptr));toolBox ->setItemText(toolBox->indexOf(page_2),QCoreApplication::translate("Widget", "Page 2", nullptr));} // retranslateUi};namespace Ui {class Widget: public Ui_Widget {};
} // namespace UiQT_END_NAMESPACE#endif // UI_WIDGET_H

(4)

谢谢

http://www.xdnf.cn/news/8551.html

相关文章:

  • 详解最长公共子序列问题
  • 【每日一题】【前缀和优化】【前/后缀最值】牛客练习赛139 B/C题 大卫的密码 (Hard Version) C++
  • Git研究
  • Anthropic推出Claude Code SDK,强化AI助理与自动化开发整合
  • 微信小程序调试
  • Python实例题:人机对战初体验Python基于Pygame实现四子棋游戏
  • CSS专题之flex: 1常见问题
  • 事务基础概念
  • 抽象类、普通类和接口的区别详细讲解(面试题)
  • Maven 中央仓库操作指南
  • Baklib构建企业CMS高效协作与安全管控体系
  • 开源视频监控前端界面MotionEye
  • Java基础 Day19
  • python web开发-Flask模板引擎Jinja2完全指南
  • AI扫描王APP:高效便捷的手机扫描工具,让生活更智能
  • yum命令常用选项
  • redis使用RDB文件恢复数据
  • 计算机网络学习20250524
  • vs2022 Qt Visual Studio Tools插件设置
  • WPF按钮Radius化
  • DAY01:【ML 第二弹】高等数学
  • Java 函数式接口(Functional Interface)
  • Disruptor—2.并发编程相关简介
  • HarmonyOS实战:高德地图定位功能完整流程详解
  • 《Spark/Flink/Doris离线实时数仓开发》目录
  • Linux目录介绍+Redis部署(小白篇)
  • 基于大模型的髋关节骨关节炎预测与治疗方案研究报告
  • client.chat.completions.create方法参数详解
  • 指令集架构、微架构、厂商对应关系
  • 浏览器强缓存还未过期,但服务器资源已经变了怎么办?