我是Qt新手。我在Qt中做了一个项目。 现在我需要将QMainWindow
更改为QDialog
。 如何在不删除所有项目的情况下执行此操作? 如果将基本主窗口更改为QDialog
,是否有必要为主窗口创建一个新窗口?如何将QMainWindow更改为QDialog
2
A
回答
1
您可以自由使用任何类型的QWidget
为主。主窗口是您决定的任何内容,通常是您在main()
函数中创建并显示的窗口。所以你可以自由地改变你的基类到QDialog
,它可能会工作。但是,如果您使用Qt Designer(直接或通过Qt Creator)创建包含所有小部件的文件,而不是手工编写界面,并且您不想再次通过这种麻烦,它可能有点棘手。
一种方法是创建一个新的QDialog
,然后将设计的窗口内容复制粘贴到新窗口。这是最简单的方法,但是您可能会丢失在设计器中设置的某些属性,因为并非所有内容都被复制。
更棘手,也是更强大的方法是手动编辑创建的.ui
文件。毕竟,它只是一个简单的XML文件。查找class
属性并将class="QMainWindow"
更改为class="QDialog"
。您还应该查看属性并通过查看文档来检查这些属性是否在QDialog
中定义。如果它们是QMainWindow特定的,那么只需仔细删除它们。
当然,在使用XML之前,您应该备份您的项目(或将其提交给源代码管理系统),因为您可能会搞砸一些东西,以至于设计时会简单地删除部分文件,解析。
3
取决于您是否有.ui
文件。
如果是这样,你可以编辑的.ui和改线
<widget class="QMainWindow" name="MainWindow">
要
<widget class="QDialog" name="MainWindow">
此外,想一想如果像QMenuBar
,QToolBar
和QStatusBar
类是必要的,您的项目。 Qt Designer默认将它们放在.ui
文件中,因为它们被QMainWindow
使用。
之后,您应该更改MainWindow
的基类。你应该有这样的事情:
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
所以你需要通过QDialog
改变QMainWindow
。
#include <QDialog>
namespace Ui {
class MainWindow;
}
class MainWindow : public QDialog
{
如果没有.ui
文件,第一个步骤是没有必要的(显然:))
当然,你需要检查,如果你使用任何QMainWindow
方法是不由QDialog
执行,以避免编译错误和功能缺失。
相关问题
- 1. 将我的Qdialog更改为QMainWindow
- 2. 将QDialog连接到QMainWindow
- 3. 如何在QDialog中显示QMainWindow
- 4. PY Qt从QMainWindow打开QDialog
- 5. 如何将信号从QDialog发送到QMainWindow类
- 6. QMainWindow,QWidget和QDialog有什么区别?
- 7. 从QDialog到QMainWindow之间的连接 - PyQt5
- 8. 无法连接的QMainWindow和QDialog的
- 9. PyQt在QMainWindow中创建一个QDialog
- 10. 如何从Qdialog中更改QStackedWidget索引
- 11. Python Qt如何打开从QMainWindow弹出QDialog
- 12. 指向的QMainWindow更改
- 13. 如何将QMainWindow设置为模态?
- 14. 如何使用Qt C++在QDialog窗口和QMainWindow之间进行通信
- 15. 如何将\\更改为\
- 16. 检测的QMainWindow/QDialog的的移动端(QT 4.8)
- 17. 用qdialog关闭qmainwindow时发生Python崩溃
- 18. QMainWindow正在处理应该被QDialog捕获的事件
- 19. 打开QMainWindow后从静态函数运行QDialog对象
- 20. 从qdialog存储变量在qmainwindow中使用
- 21. 不能使用的QMainWindow后开了QDialog的(QT)
- 22. QDialog不会停留在父级之上QMainWindow
- 23. 初始化Ui指针从QMainWindow类到QDialog类
- 24. 如何根据QDialog使QScrollArea更改大小?
- 25. 如何更新QMainWindow中的QGraphicsScene
- 26. 如何显示QDialog
- 27. 如何将X11事件传递给QDialog
- 28. 浮动子QMainWindow(QMainWindow作为主QMainWindow的子部件)
- 29. 将多个QWidets合并为一个QMainWindow
- 30. QT:将QDialog作为对象传递
当我看到您自己的答案时,我已经准备好了我的答案。那么,我认为这两个都很有趣:)你的很好。谢谢;) – Tarod
@塔罗德,我忘了菜单栏,状态栏和其他这样的事情。另一方面,你没有提到不兼容的属性(尽管我不确定这甚至是一个问题,也许Designer/UIC会忽略它们)。 –
再次感谢您的留言。我赞成你,因为我认为你的回答非常好。保重! – Tarod