2016-06-29 7 views
2

"mainwindow.ui"を持たない私がダウンロードしたプロジェクトをテストしていますが、代わりにQWindowをプログラムで継承したメインウィンドウが作成されています。QWindowを構築するためのQtウィンドウフォームを適合

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

正しく動作しますが、もちろんこのウィンドウに新しい要素を追加することは、Qtデザイナを使用するほど高速ではありません。したがって、Qtデザイナで新しいフォームを作成した後、新しいウィンドウをこの既存のOpenGLWindowにプロモートして、そのコンテンツを "newwindow.ui"で表示できるようにする方法があるかどうか疑問に思っていました。私はこれが理にかなってほしい。

答えて

0

私は完全にわからないんだけど、この一般的な考え方は、あなたが作成したウィンドウクラスがメソッドにより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を削除することを忘れないでください。

+0

お寄せいただきありがとうございます! 残念ながら、OpenGLWindowコンストラクタ内で 'ui-> setupUi(this)'をコンパイルするときにエラーが発生しました。 ** Ui :: NewWindow :: setupUi(OpenGLWindow *)を呼び出すための関数はありません。ui-> setupUi(this); **。あなたはそれを修正する方法を知っていますか? – Izzy88

+0

おっと!ごめんなさい。 QWidgetsだけがQt Designerフォーム([documentation here](http://doc.qt.io/qt-5/qwindow.html#details))をサポートしているようです。あなたはQWindowからQMainWindowへの継承を変更することができますか?申し訳ありませんが、これは非常に簡単な修正のようには見えません。/ – meepzh

+0

OpenGLWindow内の非常に複雑なクラスであるほとんどすべてのメソッドは、QWindowから継承する場合にのみ機能します。とにかくありがとうございました! – Izzy88

関連する問題