在Qt中使用多个Ui和UI类?
Using multiple Ui's and Ui classes in Qt?
我有一个简单的程序,我不记得如何在同一程序中使用多个Ui表单类。我有MainWindow
类,它有一个按钮,打开Browser
类。这些类基本上都是默认的,这就是我用来打开Browser
类ui的方法:
void MainWindow::on_pushButton_2_clicked()
{
this->hide();
Browser browser;
browser.show();
}
Browser
中的构造函数是简单的ui->setupUi(this)
。
发生的是Browser
窗口打开,然后立即关闭。
您可以在堆上创建浏览器,即:
Browser* browser=new Browser(this);
browser->show();
因为我认为它不是模态
这是因为你在堆栈上分配了浏览器对象,然后它在函数结束时立即被销毁。
void MainWindow::on_pushButton_2_clicked()
{
hide();
Browser browser; // <--- constructed
browser.show();
} // <--- destructed
你有两个选项来修复它:
使它成为一个以"this"为父对象的堆对象。这将确保对象不会在函数结束时被销毁,但也不会泄漏,因为当父类被销毁时,子类也会随着Qt父/子层次结构被自动销毁。
void MainWindow::on_pushButton_2_clicked() { hide(); Browser *browser = new Browser(this); browser->show(); }
使其成为类成员。这将超过函数的作用域,所以这是可以的。
void MainWindow::on_pushButton_2_clicked() { hide(); m_browser.show(); }
相关文章:
- 如何在MS Visual Studio 2019中运行QT UI
- 如何处理使用.ui文件生成的.h文件
- 根据变量使Qt UI中的复选框为已选中/未选中
- 一旦双簧管录制开始,主 UI 线程就会被阻止
- Qt Quick,如何更改 Ui 源代码?
- QWidget UI 在使用 QQuickWidget 时冻结
- 在 3ds Max 中更新进度条后,环境和效果 UI 不刷新
- Qt - QQuickWidget setSource without freezing UI
- MFC/C++ ComboBox:禁用下拉列表关闭和打开(UI 冻结)的绘制
- Qt5 ui,多个窗口:如何从窗口 1 访问窗口 2 中的 UI 对象
- QtConcurrent - 在发布到 UI 线程的数千个结果中保持 GUI 响应
- 发出信号以从线程更新 UI
- 更好的文本UI调试C++器,如python的pudb
- 可以在JSON文件的帮助下在Qt中创建UI表单
- 在 ui 文件中隐藏 QTabWidget 中的单个选项卡窗格?
- 由于多个 *.ui 文件而导致的多个Ui_Dialog定义?
- 如何将 .ui 完全转换为 C++ 头文件和源文件
- CMake + Qt,moc 编译失败,无法实现 QMetaObject 方法(编译器找不到基本 ui 对象的标头?
- 如何创建一个接口,允许我访问C++中的按钮(和其他ui)函数,该函数是使用python中的MFC实现的
- QThread::create running on UI Thread