int main(int argc, char *argv[]){ QApplication a(argc, argv); Widget w; // 定义一个主窗口对象 w.setWindowTitle("server"); // 设置主窗口的标题 w.show(); // 显示主窗口 return a.exec();}w_qt 两个ui之间的函数怎么调用">
当前位置:   article > 正文

细说两个Qt窗口调用的相互调用_qt 两个ui之间的函数怎么调用

qt 两个ui之间的函数怎么调用

语言类型:C++

main.cpp

#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;	// 定义一个主窗口对象
    w.setWindowTitle("server");	// 设置主窗口的标题
    w.show();	// 显示主窗口

    return a.exec();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

widge.h(基类)

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QPushButton>	// 按钮基类
#include "sub.h"	// 派生类头文件

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
    void changewin();	// 主窗口切换到子窗口的事件
    void dealslot();		// 主窗口收到子窗口切换回来的信号处理函数

private:
    Ui::Widget *ui;
    QPushButton b;		// 获得一个按钮
    sub s;		// 从派生类中获得一个子窗口对象
};

#endif // WIDGET_H
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

widge.cpp(基类)

#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>
#include <QDebug>


Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    b.setParent(this);	// 按钮绑定基类主窗口
    b.setText("app");		// 设置按钮显示文本
	// 当按下按钮的时候,执行changewin函数
    connect(&b, &QPushButton::released,this, &Widget::changewin);
	// 当子窗口发来一个信号的时候,主窗口执行dealslot函数
    connect(&s, &sub::mysignal, this, &Widget::dealslot);
}

void Widget::changewin()
{
    s.show();	// 子窗口展示
    this->hide();		// 主窗口隐藏
}

void Widget::dealslot()
{
    s.hide();	// 子窗口隐藏
    this->show();	// 主窗口展示
}

Widget::~Widget()
{
    delete ui;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

sub.h(派生类)

#ifndef SUB_H
#define SUB_H

#include <QWidget>
#include <QPushButton>

class sub : public QWidget
{
    Q_OBJECT
public:
    explicit sub(QWidget *parent = nullptr);
    void sendslot();	// 传送信号函数
signals:
    void mysignal();	// 定义一个信号,signals专门用来放置该窗口对于父窗口要传送的信号
public slots:
private:
    QPushButton b1;		// 定义一个按钮
};

#endif // SUB_H
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

sub.cpp(派生类)

#include "sub.h"

sub::sub(QWidget *parent) : QWidget(parent)
{
    b1.setParent(this);
    b1.setText("bbb");
    b1.show();
    // 当点击按钮的时候,这个窗口发出一个信号
    connect(&b1, &QPushButton::clicked, this, &sub::sendslot);
}

void sub::sendslot()
{
    emit mysignal();	// 发出信号
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

这是关于在代码区域用来写切换窗口的,后续会加上在ui页面怎么进行创建和切换。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/730675
推荐阅读
相关标签
  

闽ICP备14008679号