qt上位机界面转移后多了mainwindow

qt上位机界面转移后多了mainwindow,第1张

在Qt上位机界面转移后出现多了mainwindow的情况,可能是因为您在新的界面中创建了一个新的MainWindow对象,而没有正确地关闭或隐藏原来的MainWindow对象。

为了解决这个问题,您可以尝试以下几个方法:

1. 隐藏原来的MainWindow对象:在新的界面中创建一个新的QWidget对象,并将其设置为新的MainWindow对象的中心窗口(setCentralWidget),然后使用hide()方法隐藏原来的MainWindow对象,而不是创建一个新的MainWindow对象。

2. 关闭原来的MainWindow对象:在新的界面中创建一个新的MainWindow对象,并将其设置为新的MainWindow对象的中心窗口(setCentralWidget),然后使用close()方法关闭原来的MainWindow对象。

3. 使用QStackedWidget:使用QStackedWidget来管理多个界面,而不是创建多个MainWindow对象。在QStackedWidget中,每个界面都是一个QWidget对象,可以通过setCurrentIndex()方法来切换界面。

无论使用哪种方法,都需要确保只有一个MainWindow对象存在,以避免出现多个MainWindow对象的情况。

今天根据教程-《Qt开发实例》学习遇到一个问题,当在MainWindow类中添加qPushbutton后,按钮无法用鼠标点击,折腾了很久发现是MainWindow中private预先定义的

Ui::MainWindow *ui 的原因,它通过ui->setupUi(this) 创建了一个位于窗口顶部的栏位,且至于了窗口最顶层,导致后来创建的qPushbutton被覆盖住了,所以无法点击

若将代码作以下改动:

#ifndef MAINWINDOW_H

#define MAINWINDOW_H

#include <QMainWindow>

#include <QPushButton>

#include <QMouseEvent>//引用鼠标类头文件

namespace Ui {

class MainWindow

}

class MainWindow : public QMainWindow

{

Q_OBJECT

public:

explicit MainWindow(QWidget *parent = 0)

~MainWindow()

private:

// Ui::MainWindow *ui

QPushButton *btClose

}

#endif // MAINWINDOW_H

--------------------mainwindow.h

#include "mainwindow.h"

#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :

QMainWindow(parent)

// ui(new Ui::MainWindow)

{

// ui->setupUi(this)

btClose = new QPushButton(this)

btClose->setText("关闭")

}

MainWindow::~MainWindow()

{

// delete ui

}

-----------------------------mainwindow.cpp

那按钮就可以起作用了


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11531153.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存