首页 > 其他分享 >Qt父窗口与子窗口数据交互(用拾色器举例)

Qt父窗口与子窗口数据交互(用拾色器举例)

时间:2023-05-25 15:34:13浏览次数:54  
标签:用拾 horizontalSlider value ui QString str arg 窗口 色器


Qt父窗口与子窗口数据交互(用拾色器举例)_数据交互



文章目录

  • 一.效果图
  • 二.实现
  • 1.在子窗口中声明信号
  • 2.在主窗口中声明并实现槽函数,并进行信号与槽的绑定
  • 3.在子窗口中发送信号(emit),并完成其控件的相应
  • 4.在子窗口的构造函数中传入需要的主窗口数据



一.效果图

Qt父窗口与子窗口数据交互(用拾色器举例)_数据交互_02


二.实现

首先我们创建主窗口和子窗口,并拖动控件,完成基本界面。

Qt父窗口与子窗口数据交互(用拾色器举例)_拾色器_03


Qt父窗口与子窗口数据交互(用拾色器举例)_拾色器_04

这里的布局以及按钮的样式表的实现不在列出,有需要可阅读博主下面两篇博文:

  • qt 如何设计好布局和漂亮的界面
  • 初学Qt不会样式表怎么办,打包好的Qt样式表一键生成送给你

小提示:拖拽的lineEdit的组件编译后可能是可修改状态,只需要在该控件属性栏中找到readOnly打对勾即可。


主窗口和子窗口创建好后,就要进行数据交互了,再敲代码之前,读者应了解实现交互的步骤:

  • 1.在子窗口中声明信号
  • 2.在主窗口中声明并实现槽函数,并进行信号与槽的绑定
  • 3.在子窗口中发送信号(emit)
  • 4.在子窗口的构造函数中传入需要的主窗口数据

然后就是敲代码了:

1.在子窗口中声明信号

colorform.h

signals:
    void GetUdpLogMsg(QString msg);

2.在主窗口中声明并实现槽函数,并进行信号与槽的绑定

mainwindow.h

private slots:
    void on_pushButton_2_clicked();
    void PrintLogMsg_font(QString msg);
    void PrintLogMsg_backgroud(QString msg);
    void PrintLogMsg_border(QString msg);
    void on_pushButton_3_clicked();
    void on_pushButton_4_clicked();
    void on_pushButton_5_clicked();

槽函数中的参数就是子窗口传给父窗口的数据,这个数据由子窗口的信号获得
mainwindow.cpp

void MainWindow::PrintLogMsg_font(QString msg)
{
    ui->lineEdit->setText(msg);
    QString str = QString("background:%1;border-radius:4px;").arg(msg);
    ui->pushButton_3->setStyleSheet(str);
}
void MainWindow::PrintLogMsg_backgroud(QString msg)
{
    ui->lineEdit_2->setText(msg);
    QString str = QString("background:%1;border-radius:4px;").arg(msg);
    ui->pushButton_4->setStyleSheet(str);
}

void MainWindow::PrintLogMsg_border(QString msg)
{
    ui->lineEdit_3->setText(msg);
    QString str = QString("background:%1;border-radius:4px;").arg(msg);
    ui->pushButton_5->setStyleSheet(str);
}

void MainWindow::on_pushButton_3_clicked() //字体颜色
{
    cp = new ColorForm(0,ui->lineEdit->text());
    cp->show();
    connect(cp,SIGNAL(GetUdpLogMsg(QString)),this,SLOT(PrintLogMsg_font(QString)));
}

void MainWindow::on_pushButton_4_clicked() //背景颜色
{
    cp = new ColorForm(0,ui->lineEdit_2->text());
    cp->show();
    connect(cp,SIGNAL(GetUdpLogMsg(QString)),this,SLOT(PrintLogMsg_backgroud(QString)));
}

void MainWindow::on_pushButton_5_clicked()//边框颜色
{
    cp = new ColorForm(0,ui->lineEdit_3->text());
    cp->show();
    connect(cp,SIGNAL(GetUdpLogMsg(QString)),this,SLOT(PrintLogMsg_border(QString)));
}

3.在子窗口中发送信号(emit),并完成其控件的相应

colorform.h

void ColorForm::on_pushButton_clicked() //确定
{
    emit GetUdpLogMsg(ui->lineEdit_4->text());
    this->close();
}
void ColorForm::on_pushButton_2_clicked() //关闭
{
    this->close();
}

void ColorForm::on_horizontalSlider_valueChanged(int value)
{
    ui->lineEdit->setText(QString::number(value));
    QString str = QString("background:rgb(%1,%2,%3)").arg(ui->horizontalSlider->value()).arg(ui->horizontalSlider_2->value()).arg(ui->horizontalSlider_3->value());
    ui->label_3->setStyleSheet(str);

    QString str_2 = QString("#%1%2%3").arg(ui->horizontalSlider->value(),2,16,QChar('0')).arg(ui->horizontalSlider_2->value(),2,16,QChar('0')).arg(ui->horizontalSlider_3->value(),2,16,QChar('0'));
    qDebug()<<str_2;
    ui->lineEdit_4->setText(str_2);
}

void ColorForm::on_horizontalSlider_2_valueChanged(int value)
{
    ui->lineEdit_2->setText(QString::number(value));
    QString str = QString("background:rgb(%1,%2,%3)").arg(ui->horizontalSlider->value()).arg(ui->horizontalSlider_2->value()).arg(ui->horizontalSlider_3->value());
    ui->label_3->setStyleSheet(str);

    QString str_2 = QString("#%1%2%3").arg(ui->horizontalSlider->value(),2,16,QChar('0')).arg(ui->horizontalSlider_2->value(),2,16,QChar('0')).arg(ui->horizontalSlider_3->value(),2,16,QChar('0'));
    qDebug()<<str_2;
    ui->lineEdit_4->setText(str_2);
}

void ColorForm::on_horizontalSlider_3_valueChanged(int value)
{
    ui->lineEdit_3->setText(QString::number(value));
    QString str = QString("background:rgb(%1,%2,%3)").arg(ui->horizontalSlider->value()).arg(ui->horizontalSlider_2->value()).arg(ui->horizontalSlider_3->value());
    ui->label_3->setStyleSheet(str);

    QString str_2 = QString("#%1%2%3").arg(ui->horizontalSlider->value(),2,16,QChar('0')).arg(ui->horizontalSlider_2->value(),2,16,QChar('0')).arg(ui->horizontalSlider_3->value(),2,16,QChar('0'));
    qDebug()<<str_2;
    ui->lineEdit_4->setText(str_2);
}

4.在子窗口的构造函数中传入需要的主窗口数据

注意2中的:

//这里的构造函数传入了子窗口需要主窗口提供的数据ui->lineEdit_2->text()
cp = new ColorForm(0,ui->lineEdit_2->text());
cp->show();


标签:用拾,horizontalSlider,value,ui,QString,str,arg,窗口,色器
From: https://blog.51cto.com/u_14770531/6348306

相关文章

  • pb中“保存”按钮,数据窗口更新表时列字段检查
    //点击“保存”触发事件1Longll_row23//将控件“数据对象”的编辑值存入缓存区等待验证4IFdw_1.AcceptText()=-1ThenReturn-15//待处理状态6IFdw_1.Of_UpdatesPending()=0ThenReturn0789Forll_row=1Todw_1.rowcount()10//......
  • 力扣239(Java)- 滑动窗口最大值(困难)
    题目:给你一个整数数组nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例1:输入:nums=[1,3,-1,-3,5,3,6,7],k=3输出:[3,3,5,5,6,7]解释:滑动窗口的位......
  • Tkinter 中隐藏和取消隐藏第二窗口窗口 – Python,用于多界面窗口程序
    在Tkinter中隐藏和取消隐藏窗口–Python先决条件: TkinterPython为开发GUI(图形用户界面)提供了多种选择。在所有GUI方法中,Tkinter是最常用的方法。它是Python附带的TkGUI工具包的标准Python接口。PythonwithTkinter是创建GUI应用程序的最快、最简单的方法。使......
  • 代码随想录算法训练营第13天 | ● 239. 滑动窗口最大值 ● 347.前 K 个高频元素 ● 总
     第五章 栈与队列part03今日内容:  ●  239. 滑动窗口最大值●  347.前 K 个高频元素●  总结  详细布置    239. 滑动窗口最大值 (一刷至少需要理解思路) 之前讲的都是栈的应用,这次该是队列的应用了。 本题算比较有难度的,需要自己去构造......
  • charles 选中某个请求后,下方不展示 response 小窗口
    今天使用charles抓包,选中某个请求后,发现下方只有Request窗口,并没有Response的窗口,发现需要点击Conent之后才能看到Response窗口......
  • 电脑文件删除时如何不显示“是否放入回收站”的二次确认窗口?
      本文介绍Windows电脑删除文件时,开启或取消显示确认删除这一提示弹窗的方法。  在Windows电脑中,我们删除任何一个文件时,无论是用鼠标右键选择“删除”选项,还是用快捷键Ctrl与D,默认情况下都会有一个名为“删除文件”的提示框,询问你是否确认要将该文件放入回收站。  在部分......
  • 代码随想录算法训练营第十三天|239. 滑动窗口最大值、347. 前 K 个高频元素
    【参考链接】239.滑动窗口最大值【注意】 1.使用单调队列的经典题目。2.大顶堆每次只能弹出最大值,无法移除其他数值,造成大顶堆维护的不是滑动窗口里面的数值了。所以不能用大顶堆。3.需要一个队列,放进去窗口里的元素,然后随着窗口的移动,队列也一进一出,每次移动之后,队列告诉......
  • 5-20打卡:qt实现开启关闭窗口
    我想要实现:按下新建窗口,然后新建出一个窗口,这时按钮变成关闭窗口,然后我再点击关闭窗口按钮、那么新建的窗口关闭。//在Widget类里面声明一个QWidget的指针成员变量QWidget*w;Widget::Widget(QWidget*parent):QWidget(parent),ui(newUi::Widget){ui->set......
  • 窗口函数
    学习资料:https://juejin.cn/post/7226237518446133305https://www.bilibili.com/video/BV1jG411M7hr/?spm_id_from=333.880.my_history.page.click&vd_source=46d50b5d646b50dcb2a208d3946b1598......
  • 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之登录窗口调试
         现在可以对登录窗口进行调试了。     打开系统的首页页面文件,Views\Home目录下的Index.cshtml文件。要动态加载登录窗口,需要先设置好加载路径,因而在onReady函数上加入以下代码:Ext.Loader.setConfig({true,paths:{'Ext.ux':'scripts/extjs/ux'......