概述:
我在某个窗口设计了QPushbutton,点击后打开一个新的对话窗口(Say start_backup_window)。
在这个窗口中我设计了另一个QPushbutton说check_backup_option_button,点击它时应打开另一个Dialog窗口说(backup_options_window)。
问题:一切都按预期工作但当我点击check_backup_option_button时,新的backup_options_window与之前的start_backup_window重叠。我尝试了一些东西,但它没有用。
另外我注意到当我拖动旧窗口时,新窗口允许我这样做。一般情况下你不能对旧窗口做任何事情,除非你在新窗口中单击取消或确定按钮。 请你们给我建议如何继续。
以下是我的代码
start_backup_window_old.cpp
#include "backup_options_window.h"
// called init() function in the constructor
start_backup_window::start_backup_window(QWidget *parent)
: QDialog(parent), self_backup_options( 0 )
{
ui.setupUi(this);
init_cal_signals();
}
void start_backup_window::init_cal_signals()
{
connect( ui.check_backup_option_button, SIGNAL( clicked () ), this , SLOT( open_new_backup_options_window() ) );
}
void start_backup_window::open_new_backup_options_window()
{
self_backup_options = new backup_options_window( this );
self_backup_options->show();
}
答案 0 :(得分:1)
问题似乎是将父设置为backup_options_window。我建议用以下方式更改代码:
void start_backup_window::open_new_backup_options_window()
{
if (!self_backup_options)
self_backup_options = new backup_options_window;
self_backup_options->setWindowModality(Qt::WindowModal); // makes the window modal
self_backup_options->show();
}
通过此实现,您需要稍后删除self_backup_options
指针。例如,在start_backup_window
类的析构函数中。请不要忘记在self_backup_options
类的构造函数中将start_backup_window
初始化为null。