Qt中子窗体控件向父窗体控件传值

本文介绍了在Qt中如何实现子窗体控件向父窗体控件传递值的两种方法:使用全局变量和利用信号与槽机制。作者在实践中创建了一个工程,通过按钮触发子窗体,实现在子窗体中输入值后,点击确定将值传递回父窗体,并详细解释了代码实现过程,包括信号和槽的关联以及可能出现的问题和解决方法。
摘要由CSDN通过智能技术生成

今天学习Qt中控件相互传值的方法。其中参考了一些网上的意见。今天学习了两种方法。其中一种是利用全局变量;另一种是利用了Qt中的信号和槽机制。当学习signals和slot机制的时候,有一些疑问,在介绍利用signals和slot进行值传递的时候,再说。

练习是这样子,如下两图所示。
第一幅图是主窗体,在画笔宽度文本框和画笔颜色文本框中可以填入宽度和样色值,决定画笔宽度和颜色,然后选择右边的画椭圆,画矩形,画多边形按钮可以画相应的图形,其中画图中,大部分功能是直接在函数中赋值好的,可以创建固定大小的图形。
但是,练习中实现了一个功能,可以改变其中的一个坐标,通过文本框来改变。
也可以单击坐标点按钮,会弹出一个子窗体对话框,如第二个图所示,练习中只实现了X文本框向父窗体传值,其他三个没有实现,以后吧。当在X文本框填入X值后,单击确定按钮,它的值将传向父窗体中未命名的四个文本框的左上角那个,同时显示出来,这时再按画椭圆,画矩形按钮,其中一个坐标将改变,图形也会改变,练习中是改变的宽度值。
这里写图片描述

这里写图片描述

下面是主要代码:
首先建立一个工程,创建父窗体,结果如上“简单图形绘制”,然后给坐标点按钮和其他三个按钮添加槽函数,下面是代码,利用全局变量和signals/slot来进行传值。测试的时候可以注释掉其中一种,看看两种是不是都可以。
mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots://槽函数
    void on_CreateEllipse_clicked();//画椭圆

    void on_createRect_clicked();//画矩形

    void on_createPloygen_clicked();//画多边形

    void on_pushButton_clicked();//坐标点槽函数
    void receivedata(QString mx);//接收数据槽
private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

mainwindow.cpp:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QGraphicsScene>
#include<QGraphicsView>
#include<QString>
#include"ellipse.h"

extern QString sx;//声明的全局变量



MainW
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值