如何在Qt中禁用打开的子窗口上的父窗口?

时间:2016-06-19 04:08:13

标签: qt

我想在主窗口禁止任何操作,包括关闭。而开放的孩子

我试试:

// child window
Settings::Settings(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Settings)
{
    ui->setupUi(this);
    ((QWidget*)parent)->setEnabled(false); // or parent->setEnabled(false);
 ...

Settings->show();

上造成细分错误

我尝试从Settings构造函数/析构函数发送信号 到MainClass广告位

void MainClass::Enable(bool enable)
{
  qDebug() << "detect signal enable"; // 
  this->setEnable(enable);
}

但未发送信号。

当然我将Settings连接到MainClass))。 信号发射在Settings的任何其他功能中起作用。

1 个答案:

答案 0 :(得分:3)

对于子窗口,最好继承QDialog QWidget),因为第一个是专为对话设计的。来自Qt docs:

  

function check(answer){ var contain=names.indexof(answer); if(contain==-1){ alert("Username Ok!"); } else { alert("This username already exists"); } }; 类是对话框窗口的基类。

您需要的方法是QDialog::exec()。它会以modal window打开您的对话框,这将阻止其他应用程序窗口的输入,直到它被关闭。