human_blue 2015-09-06 05:19 采纳率: 40%
浏览 2022
已采纳

基于QT的窗口切换问题

我设计多个窗口,然后切换。问题现象是点击按钮后总是每次出现两个相同窗口,而不是只有一个。窗口界面有QWidget类,也有Dialog类。代码如下:
main.cpp

 #include "widget_login.h"
//#include "mainmenu.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget_Login w;

    w.move(200, 200);
    w.show();

    return a.exec();
}

登录界面widget_login.h

 #include <QWidget>

namespace Ui {
class Widget_Login;
}

class Widget_Login : public QWidget
{
    Q_OBJECT

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

private slots:
    void on_pushButton_clicked();

private:
    Ui::Widget_Login *ui;

};

#endif // WIDGET_LOGIN_H

widget_login.cpp

 #include "widget_login.h"
#include "ui_widget_login.h"
#include "dialog.h"
#include "mainmenu.h"
#include <iostream>
#include <fstream>

Widget_Login::Widget_Login(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget_Login)
{
    ui->setupUi(this);
    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(on_pushButton_clicked()));
}

Widget_Login::~Widget_Login()
{
    delete ui;
}

void Widget_Login::on_pushButton_clicked()
{
     Mainmenu *menu = new Mainmenu();

   this->close();
   menu->show();

}

主界面mainmenu.h

 #ifndef MAINMENU_H
#define MAINMENU_H

#include <QWidget>
#include "oper_window.h"

namespace Ui {
class Mainmenu;
}

class Mainmenu : public QWidget
{
    Q_OBJECT

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

private slots:

    void on_pushButton_SET_clicked();

    void on_pushButton_CHECK_clicked();

    void on_pushButton_OPERATION_clicked();

    void on_pushButton_REPLAY_clicked();

private:
    Ui::Mainmenu *ui;

};


#endif // MAINMENU_H

mainmenu.cpp

 #include "mainmenu.h"
#include "ui_mainmenu.h"
#include "widget_login.h"


Mainmenu::Mainmenu(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Mainmenu)
{
    ui->setupUi(this);
    connect(ui->pushButton_SET, SIGNAL(clicked()), this, SLOT(on_pushButton_SET_clicked()));
    connect(ui->pushButton_CHECK, SIGNAL(clicked()), this, SLOT(on_pushButton_CHECK_clicked()));
    connect(ui->pushButton_OPERATION, SIGNAL(clicked()), this, SLOT(on_pushButton_OPERATION_clicked()));
    connect(ui->pushButton_REPLAY, SIGNAL(clicked()), this, SLOT(on_pushButton_REPLAY_clicked()));
}

Mainmenu::~Mainmenu()
{
    delete ui;
}

void Mainmenu::on_pushButton_SET_clicked()
{
    Widget_Login *wi = new Widget_Login;
    this->close();
    wi->show();

}

void Mainmenu::on_pushButton_CHECK_clicked()
{

}

void Mainmenu::on_pushButton_OPERATION_clicked()
{

}

void Mainmenu::on_pushButton_REPLAY_clicked()
{

}
  • 写回答

1条回答 默认 最新

  • threenewbee 2015-09-06 08:05
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 C# P/Invoke的效率问题
  • ¥20 thinkphp适配人大金仓问题
  • ¥20 Oracle替换.dbf文件后无法连接,如何解决?(相关搜索:数据库|死循环)
  • ¥15 数据库数据成问号了,前台查询正常,数据库查询是?号
  • ¥15 算法使用了tf-idf,用手肘图确定k值确定不了,第四轮廓系数又太小才有0.006088746097507285,如何解决?(相关搜索:数据处理)
  • ¥15 彩灯控制电路,会的加我QQ1482956179
  • ¥200 相机拍直接转存到电脑上 立拍立穿无线局域网传
  • ¥15 (关键词-电路设计)
  • ¥15 如何解决MIPS计算是否溢出
  • ¥15 vue中我代理了iframe,iframe却走的是路由,没有显示该显示的网站,这个该如何处理