QUiLoader 从 QWidget* 转换为 QDialog*,可能吗?
QUiLoader cast from QWidget* to QDialog*, possible?
我好像漏掉了什么。难道不能从 QWidget 转换为 QDialog 吗?
QUiLoader loader;
QFile file("../../plugin/ui/settings.ui");
file.open(QFile::ReadOnly);
m_settingsDialog = qobject_cast<QDialog*>(loader.load(&file));
if(!m_settingsDialog)
qDebug() << "invalid!";
file.close();
我一直认为它无效。
显然你的 settings.ui
文件没有描述 QDialog
,因为加载器没有创建一个(因此动态转换失败)。
如果您控制 ui 文件并且是唯一的用户,您可以将其更改为定义一个 QDialog
。
如果不这样做,您可以将加载的小部件嵌入 QDialog
:
m_settingsDialog = new QDialog;
QWidget settingsWidget = loader.load(&file);
settingsWidget.setParent(m_settingsDialog);
我好像漏掉了什么。难道不能从 QWidget 转换为 QDialog 吗?
QUiLoader loader;
QFile file("../../plugin/ui/settings.ui");
file.open(QFile::ReadOnly);
m_settingsDialog = qobject_cast<QDialog*>(loader.load(&file));
if(!m_settingsDialog)
qDebug() << "invalid!";
file.close();
我一直认为它无效。
显然你的 settings.ui
文件没有描述 QDialog
,因为加载器没有创建一个(因此动态转换失败)。
如果您控制 ui 文件并且是唯一的用户,您可以将其更改为定义一个 QDialog
。
如果不这样做,您可以将加载的小部件嵌入 QDialog
:
m_settingsDialog = new QDialog;
QWidget settingsWidget = loader.load(&file);
settingsWidget.setParent(m_settingsDialog);