Q按下按钮打开QWidget
QPushButton to open QWidget
我用Qt Designer创建了两个窗口,我想在第一个窗口中用按钮"…"正确打开第二个窗口。我试着这么做了,谢谢你的帮助。
第一窗口.cpp
#include "firstwindow.h"
#include "ui_firstwindow.h"
#include "secondwindow.h"
#include "ui_secondwindow.h"
FirstWindow::FirstWindow(QWidget *parent) :
QWidget(parent),
ui(new Ui::FirstWindow)
{
ui->setupUi(this);
ui->buttonapply->setText("Valider");
ui->buttoncancel->setText("Annuler");
ui->buttonetc->setText("...");
ui->buttonnext->setIcon(QIcon(":/Images/Images/Haut.png"));
ui->buttonprevious->setIcon(QIcon(":/Images/Images/Bas.png"));
connect(ui->buttonetc, SIGNAL(clicked()), this, SLOT(ShowSecondWindow()));
}
FirstWindow::~FirstWindow()
{
delete ui;
}
void FirstWindow::ShowSecondWindow()
{
SecondWindow window;
window.show();
}
第一窗口.h
#ifndef FIRSTWINDOW_H
#define FIRSTWINDOW_H
#include <QApplication>
#include <QWidget>
#include <QIcon>
#include "secondwindow.h"
#include "ui_secondwindow.h"
namespace Ui {
class FirstWindow;
}
class FirstWindow : public QWidget
{
Q_OBJECT
public:
explicit FirstWindow(QWidget *parent = 0);
~FirstWindow();
public slots:
void ShowSecondWindow();
private:
Ui::FirstWindow *ui;
SecondWindow *window;
};
#endif // FIRSTWINDOW_H
第二窗口.cpp
#include "firstwindow.h"
#include "ui_firstwindow.h"
#include "secondwindow.h"
#include "ui_secondwindow.h"
SecondWindow::SecondWindow(QWidget *parent) :
QWidget(parent),
ui(new Ui::SecondWindow)
{
ui->setupUi(this);
}
SecondWindow::~SecondWindow()
{
delete ui;
}
第二窗口.h
#ifndef SECONDWINDOW_H
#define SECONDWINDOW_H
#include <QWidget>
#include "firstwindow.h"
#include "ui_firstwindow.h"
namespace Ui {
class SecondWindow;
}
class SecondWindow : public QWidget
{
Q_OBJECT
public:
explicit SecondWindow(QWidget *parent = 0);
~SecondWindow();
private:
Ui::SecondWindow *ui;
};
#endif // SECONDWINDOW_H
main.cpp
#include "firstwindow.h"
#include "ui_firstwindow.h"
#include "secondwindow.h"
#include "ui_secondwindow.h"
int main(int argc, char **argv)
{
QApplication program(argc, argv);
FirstWindow window;
window.setWindowTitle("BASELFI - Programme - © 2016 H2A");
window.setWindowIcon(QIcon(":/Images/Images/Bouclier.png"));
window.setFixedSize(340, 270);
window.show();
return program.exec();
}
void FirstWindow::ShowSecondWindow()
{
SecondWindow window;
window.show();
}
此函数退出时,SecondWindow对象将立即关闭。因为它只在堆栈上创建,超出范围时会自动销毁。
要解决此问题,必须将其作为FirstWindow类的数据成员分配到堆/堆栈中,或者使其成为静态
分配到堆并使其成为数据成员:
class FirstWindow
{
....
private:
SecondWindow* window; // you must delete this in destructor
};
void FirstWindow::ShowSecondWindow()
{
window = new SecondWindow;
window->show();
}
或使其静止:
void FirstWindow::ShowSecondWindow()
{
static SecondWindow window;
window.show();
}
或分配到堆栈并使其成为FirstWindow类的数据成员:
class FirstWindow
{
....
private:
SecondWindow window; // initialize in constructor
};
void FirstWindow::ShowSecondWindow()
{
window.show();
}
相关文章:
- 问:如何使用C++中的按钮从窗口打开窗口
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- QML按钮点击功能执行顺序
- 当用户超过按钮点击限制时报告
- 函数计算用户按下按钮的频率
- 热键/按钮,根据需要进行编译,但不运行(在F5和Ctrl+Shift+B之间)
- FLTK:按下哪个按钮 - 将数字传递给按钮的回调 (lambda)
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- 垂直方向的 Gtk3+ 旋转按钮 (c/c++)
- Qt自定义QPush按钮未显示在布局上
- 如何在QT Creator上将QWidget声明为继承类的对象
- SDL 操纵杆按钮按下/C++
- 如何使用按钮更新GTK3图像以使用C++从相机捕获图片
- Qt中来自不同功能的按钮引用
- 如何在qWidget.showFullScreen()上自动缩放Qt中的按钮和所有内容
- 如何在Qt QWidget中更改标题栏按钮,例如关闭和最小化按钮
- 按钮浮动在QWidget上
- 在 QWidget 传递给另一个类后,将 QWidget 传递给 QPushButton(按钮不显示)
- QT - 从成员 QWidget 连接错误的按钮
- Q按下按钮打开QWidget