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

浙江华临建设集团有限公司网站能源建设网站

浙江华临建设集团有限公司网站,能源建设网站,做微课常用的网站有哪些,网站内部搜索怎么做Qt 是一个跨平台C图形界面开发库#xff0c;利用Qt可以快速开发跨平台窗体应用程序#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置#xff0c;实现图形化开发极大的方便了开发效率#xff0c;本章将重点介绍自定义Dialog组件的常用方法及灵活运用。 在…Qt 是一个跨平台C图形界面开发库利用Qt可以快速开发跨平台窗体应用程序在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置实现图形化开发极大的方便了开发效率本章将重点介绍自定义Dialog组件的常用方法及灵活运用。 在之前的文章中笔者已经为大家展示了默认Dialog组件的使用方法虽然内置组件支持对数据的输入但有时候我们需要一次性输入多个数据此时如果之使用默认模态对话框似乎不太够用此时我们需要自己创建一个自定义对话框需要说明的是此类对话框也是一种窗体所以可以在其上面放置任何通用组件以实现更多复杂的开发需求。 自定义对话框需要解决的问题是如何让父窗体与子窗体进行数据交换要实现数据的交换有两种方式第一种方式是通过动态加载模态对话框当用户点击确定后通过GetValue()来拿到数据而第二种方式则是通过发送信号的方式将数据投递给父窗体这两种方式都可以读者可根据自身需求来选择不同的通信方式。 1.1 使用模态对话框传值 首先我们需要创建一个自定义对话框在Qt中创建对话框很容易具体创建流程如下所示 选择项目 - AddNew - QT - Qt设计师界面类 - 选择DialogWithoutButtons - 命名为Dialog保存 此时直接点击下一步按钮并选中Forms/dialog.ui界面编辑菜单在编辑栏中我们分别增加一个LineEdit编辑框以及两个PushButton按钮组件将第一个组件命名为BtnOk将第二个组件命名为BtnCancel界面如下所示 当做完页面布局后其次我们还需要在Dialog.ui组件上增加两个信号分别是点击和关闭并将信号关联到两个槽函数上其信号应该写成如下图所示。 如上图accept() 是 QDialog 类的一个公共槽函数。调用这个槽函数会触发对话框的接受accept操作通常用于模拟用户点击对话框的“确定”按钮。同样的reject() 也是 QDialog 类的一个公共槽函数。调用这个槽函数会触发对话框的拒绝reject操作通常用于模拟用户点击对话框的“取消”按钮。 接着我们点开模态对话框的dialog.cpp对话框类其类内需要定义两个成员函数它们的功能如下 第一个 GetValue() 用来获取当前编辑框内的数据并将数据返回给父窗体。第二个 SetValue() 用来接收传入的参数并将此参数设置到自身窗体中的编辑框内。 #include dialog.h #include ui_dialog.hDialog::Dialog(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog) {ui-setupUi(this); }// 用于MainWindow获取编辑框中的数据 QString Dialog::GetValue() {return ui-lineEdit-text(); }// 用于设置当前编辑框中的数据为MainWindow void Dialog::SetValue(QString x) {ui-lineEdit-setText(x); }Dialog::~Dialog() {delete ui; }接着我们来看一下MainWindow函数中是如何接收参数的对于主窗体来说当用户点击on_pushButton_clicked()按钮时我们需要动态将自己创建的Dialog加载读取出主窗体编辑框内的值并设置到子窗体内当用户按下QDialog::Accepted时则是获取子窗体内的值此时通过调用ptr-GetValue()子窗体的成员函数来返回一个字符串并将其设置到父窗体的编辑框内主函数代码如下所示 // 首先要包含Dialog对话框类 #include dialog.h#include iostream #include QDialogMainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow) {ui-setupUi(this);ui-lineEdit-setEnabled(false);ui-lineEdit-setText(hello lyshark); }MainWindow::~MainWindow() {delete ui; }// 按钮点击后执行 void MainWindow::on_pushButton_clicked() {// 创建模态对话框Dialog *ptr new Dialog(this); // 创建一个对话框Qt::WindowFlags flags ptr-windowFlags(); // 需要获取返回值ptr-setWindowFlags(flags | Qt::MSWindowsFixedSizeDialogHint); // 设置对话框固定大小// 读取MainWindows参数并设置到DialogQString item ui-lineEdit-text();ptr-SetValue(item);int ref ptr-exec(); // 以模态方式显示对话框if (refQDialog::Accepted) // OK键被按下,对话框关闭{// 当BtnOk被按下时,则设置对话框中的数据QString the_value ptr-GetValue();std::cout value the_value.toStdString().data() std::endl;ui-lineEdit-setText(the_value);}// 删除释放对话框句柄delete ptr; }至此就实现了参数的子窗体传递到父窗体如下图所示 2.1 使用信号传值 对于信号传值我们需要在dialog.h头文件中增加sendText()信号以及on_pushButton_clicked()槽函数的声明部分如下所示 // 定义信号(信号只需声明无需实现) signals:void sendText(QString str); private slots:void on_pushButton_clicked();而在dialog.cpp实现部分我们首先需要将子窗体中的按钮组件绑定到onBtnClick()槽函数上面当需要发送数据时直接通过调用emit sendText触发信号并携带子窗体中send_data的数据 #include dialog.h #include ui_dialog.hDialog::Dialog(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog) {ui-setupUi(this);// 连接pushButton到onBtnClick上connect(ui-pushButton, SIGNAL(clicked()), this, SLOT(onBtnClick())); }Dialog::~Dialog() {delete ui; }// 发送信号到MainWindow void Dialog::on_pushButton_clicked() {QString send_data ui-lineEdit-text();emit sendText(send_data); }接着是在mainwindow.h头文件定义中新增槽函数receiveMsg()函数用来接收信号的传值。 private slots:// 定义槽函数void receiveMsg(QString str);void on_pushButton_clicked();在mainwindow.cpp实现部分接收到信号后的槽函数receiveMsg其内部可以直接将参数设置到父类窗口的lineEdit组件上而当on_pushButton_clicked按钮被点击是我们只需要加载自己的子窗体并Connect链接槽函数receiveMsg上面当做完这一切之后再通过subwindow-show()让子窗体显示出来。 #include mainwindow.h #include ui_mainwindow.h#include dialog.h #include QDialogMainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),ui(new Ui::MainWindow) {ui-setupUi(this);ui-lineEdit-setEnabled(false); }// 接收信号并设置到LineEdit上 void MainWindow::receiveMsg(QString str) {ui-lineEdit-setText(str); }MainWindow::~MainWindow() {delete ui; }void MainWindow::on_pushButton_clicked() {Dialog *subwindow new Dialog(this);// 当收到sendText信号时使用receiveMsg槽函数处理connect(subwindow, SIGNAL(sendText(QString)), this, SLOT(receiveMsg(QString)));subwindow-show(); }当然此类对话框是非模态的读者可以拖动父对话框而由于是信号控制所以当发送参数到父窗体后子窗体并不会立即关闭如下图所示
http://www.zqtcl.cn/news/633436/

相关文章:

  • 天水建设银行网站网站建设方案免费下载
  • 长城宽带魔方优化大师官网下载
  • 宁波建设工程主管部门网站长沙网站维护
  • 网站推广机构我的世界怎么做赞助网站
  • 做网站的公司图sae wordpress storage
  • 做塑料的网站有哪些东道设计公司待遇如何
  • 烟台做网站哪家好网站加速器下载
  • 哪些网站是响应式河北省住房和城乡建设厅信用网站
  • 彩票网站html模板新闻html网页设计代码范文
  • 建网站视频怎么建网站卖产品
  • 做翻糖的网站深圳做购物网站
  • 国外界面设计网站海淘网站
  • 全国住房城乡建设厅网站wordpress 宽版
  • 网站建设实训意见中国建设人才信息网站
  • 如何给网站做301跳转中国做机床的公司网站
  • 网站建设课程体系济南建站详情
  • jsp网站空间网站开发北京 广告 手机网站
  • 郑州网站建设推广爱站网seo综合查询工具
  • 2017年网站开发用什么语言手游排行榜
  • 鞍山百度网站怎么制作建设部网站建造师公示
  • 建设部网站业绩补录营销型网站制作的方法
  • 建设网站的功能及目的是什么意思兰州网络优化seo
  • 用ps软件做ppt模板下载网站有哪些内容广州seo服务外包
  • 毕业设计论文网站开发需要多少湛江建站免费模板
  • 做豆制品的网站集团网站建设策划方案
  • 燕郊网站制作哈尔滨企业网站建站推荐
  • 本地网站做通用会员卡建立电子商务网站目的
  • ftp网站地图怎么做网站模板出售
  • 用rp怎么做网站导航菜单手机app制作入门教程
  • 国外创意网站市场营销在线课程