提要
继承于QDialog的类,在被其它类创建的改对象时,没设置父窗口前显示正常,设置了父窗口后显示不出来。
自定义窗口的构造函数
configBtnNameDialog::configBtnNameDialog(QWidget *parent) :QDialog(parent),ui(new Ui::configBtnNameDialog)
{ui->setupUi(this);setWindowFlags(Qt::FramelessWindowHint | Qt::WindowCloseButtonHint);setAttribute(Qt::WA_TranslucentBackground);//设置背景透明setWindowTitle("配置文本");
}
创建该自定义对话框的语句,没有`指出父窗口,窗口显示正常
m_configName = new configBtnNameDialog;
m_configName->show();
创建该自定义对话框的语句,指出父窗口,窗口显示不出来
m_configName = new configBtnNameDialog(this);//指定this为父窗口,该窗口变显示不出来
m_configName->show();
解决方法
由于自定义该窗口的时候,调用了设置窗口标志的函数,setWindowFlags(Qt::FramelessWindowHint | Qt::WindowCloseButtonHint);所以添加了父窗口后显示不出来,此时需要添加一个标志this->windowFlags()。将自定义窗口的构造函数中设置标志那句改为以下语句。
setWindowFlags(this->windowFlags() | Qt::FramelessWindowHint | Qt::WindowCloseButtonHint);
窗口就可以正常显示了。