QT设计师:除MainWindow以外的其他窗口
Qt Designer: Edit other window than mainwindow
我有一个项目,该项目通过qt为用户提供GUI。我使用QT设计师(集成在QT创建者中)设计了它,现在我想添加另一个窗口以使用户更改设置。
AFAIK我必须使用QWidget
来创建另一个窗口,现在我想知道如何在QT Designer中编辑此QWidget
,因为我只能设计MainWindow。
我的代码看起来像这样:
mainwindow.hpp
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
// various slot calls
// action triggered when clicking an entry in the QMenu of mainwindow
void on_action_dummy();
private:
Ui::MainWindow *ui;
QWidget dummy;
};
mainwindow.cpp
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
// various implementations of the slot calls in mainwindow.hpp
void MainWindow::on_action_dummy()
{
dummy.show();
}
也许我需要自己的新窗口上的课程?QWindow
是否适合此任务?
您需要添加新的UI文件以及标题/类。在QT Creator的"新文件"对话框中有一个选项(QT Designer表单类别的sidebar上的" QT"子类别下的类别)。然后,您将其打开,并在程序的入口点(int main()
)中像MainWindow一样实例化类。类似:
MySettingsDialog *dialog = new MySettingsDialog(this);
dialog->show();
您需要小心如何实例化 - 确保对象离开当前范围时将生存(例如,如果您在类中的方法中使用指针,则使用指针将其调用)。另外,您如何显示/执行对话框可能会有所不同。通常是要进行阻止(模式)对话框而不是新的"窗口"时的情况。
编辑:要处理内存管理,您可以设置WA_DeleteOnClose
属性:
dialog->setAttribute(Qt::WA_DeleteOnClose);
相关文章:
- 在打开多个其他窗口时使用全屏窗口时帧速率非常低
- 在Visual Studio中单实例Qt应用程序版本5.11.1中,在所有其他窗口的顶部打开Qt MainWindow
- 打开应用程序主窗口 在系统托盘图标中的其他应用程序之上
- TCP 零窗口和对其他套接字的影响
- 在单个进程中使Qt顶级窗口被其他非Qt窗口"owned"
- 是否可以从其他线程隐藏qt小部件窗口
- 资源窗口在其他系统上无法正常工作 (Visual Studio 2012)
- 编译的程序在其他窗口PC上停止响应
- 在Visual Studio发射窗口中添加了其他C 支架
- QT设计师:除MainWindow以外的其他窗口
- 如何使用窗口 API 获取其他应用中的当前活动
- 如何覆盖其他窗口应用程序的元素?
- 将 c++ 游戏部署到其他窗口计算机
- Qt5 将自定义窗口关闭信号连接到其他窗口
- 在 Windows 7 中的其他窗口之上强制应用
- 创建弹出窗口的问题,得到其他窗口代替
- 检查是否有其他窗口被关闭
- 防止其他窗口使用 windowsAPI "overriding"热键
- 在 Xwindow 中获取其他窗口的标题
- 在全屏显示是否可'rendering' GLUT 中其他窗口