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);
相关文章:
- 设计一个只能由特定类实例化的类(如果可能的话,通过make_unique)
- 有可能在Armadillo中复制MATLAB circshift方法吗
- GCC对可能有效的代码抛出init list生存期警告
- malloc() 可能出现内存泄漏
- C++quit()函数中可能存在作用域问题
- 变量可能尚未初始化[MIRA 2012规则9.1,强制性]
- 有没有可能有一个只有ADL才能找到的非好友功能
- CLANG 编译器 说:变量"PTR"可能未初始化
- 在他自己的方法中,有可能将一个对象取消引用到另一个对象吗
- 使用仅使用一次的变量调用的复制构造函数.这可能是通过调用move构造函数进行编译器优化的情况吗
- 在C++中,如何在类和函数(可能是模板化的)的头中编写完整的实现
- 有可能使shared_ptr协变吗
- 尝试将lambda函数放在队列中时出现一般分配器错误(可能是与unique_ptr有关的错误)
- 有可能在信号处理程序中设置promise吗
- 检查向量是否具有所有可能的字符组合
- 跨 DLL 边界访问虚拟方法是否安全/可能?
- 读取文件中所有可能的十六进制 16 字节序列并打印每个序列
- std::背后的基本原理assignable_from可能的实现
- 对于循环C++可能效率低下
- QUiLoader 从 QWidget* 转换为 QDialog*,可能