【问题标题】:Adapt Qt window form to prebuilt QWindow使 Qt 窗口形式适应预建的 QWindow
【发布时间】:2016-06-29 19:43:30
【问题描述】:

我正在测试一个我下载的项目,它没有“mainwindow.ui”,但主窗口是通过编程继承 QWindow 而创建的。

OpenGLWindow::OpenGLWindow(QScreen* screen ): QWindow(screen)

它可以正常工作,但是在这个窗口中添加新元素当然不如使用 Qt 设计器那么快。因此,我想知道是否有一种方法,在使用 Qt 设计器创建新表单后,将新窗口提升到这个现有的 OpenGLWindow,以便我可以在“newwindow.ui”中查看其内容。我希望这是有道理的。

【问题讨论】:

    标签: c++ qt opengl


    【解决方案1】:

    我不完全确定,但假设您创建的窗口类名为 NewWindow,这个总体思路应该可行:

    class OpenGLWindow : public QWindow {
        Ui::NewWindow *ui; // Add this variable
        /* rest of class */
    }
    
    #include <ui_newwindow.h>
    OpenGLWindow::OpenGLWindow(QScreen* screen): QWindow(screen), ui(new Ui::NewWindow) {
        ui->setupUi(this);
        /* rest of constructor */
    }
    

    然后别忘了在析构函数中删除ui

    【讨论】:

    • 感谢您的建议!不幸的是,我在 OpenGLWindow 构造函数中编译 ui-&gt;setupUi(this) 时出错。准确地说是: *no matching function for call to 'Ui::NewWindow::setupUi(OpenGLWindow)'ui->setupUi(this); **。你知道怎么解决吗?
    • 哎呀!对不起。似乎只有 QWidgets 支持 Qt Designer 表单 (documentation here)。也许您可以将继承从 QWindow 更改为 QMainWindow?抱歉,这似乎不是一个超级简单的解决方法:/
    • 别担心,问题是OpenGLWindow这个相当长而复杂的类,几乎所有的方法都必须继承自QWindow。还是谢谢你!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    • 2018-01-05
    相关资源
    最近更新 更多