我QDialog
是mainWindow
的孩子。我的问题是,当为对话框设置父级时,我无法使用setWindowsFlag
:对话框粘贴在MainWindow的左上角并且是透明的。代码如下所示:
mainWindow::MainWindow(QWidget* parent): QMainWindow(parent)
{
this->setWindowsFlags(Qt::FramelessWindowHint);
mpConfirmDialog = new ConfirmDialog();//mpConfirmDialog is a pointer and member of MainWindow
mpConfirmDialog->setParent(ui->centralWidget) ;//pass ui->centralWidget in constructor cause crash when exit????
mpConfirmDialog->hide();
}
在ConfirmDialog的构造函数中:
ConfirmDialog::ConfirmDialog(QWidget* parent){
this->setWindowsFlags(Qt::FramelessWindowHint);// only effective if comment mpConfirmDialog->setParent(ui->centralWidget) in MainWindow
}
任何想法都表示赞赏。
答案 0 :(得分:0)
操作系统之间存在一些不一致,但我们应该记住,父类构造函数很可能已经设置了一些标志,而标志添加逻辑是按位OR。我们可以尽力确保我们不会丢失这些旗帜。
this->setWindowFlags(this->windowFlags() | Qt::FramelessWindowHint);
这可能对程度有所帮助,但当然我没有您的环境和整个代码示例来证明。