
为了解决这个问题,您可以尝试以下几个方法:
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
那按钮就可以起作用了
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)