2017-08-04 23 views
0

qt5でレイアウトを使用したいが、Visual Studio 2015ではレイアウトが機能しない?ここでqt5レイアウトはVisual Studio 2015では機能しませんか?

は私のコードです:ここでは

layout.hコード

#ifndef LAYOUT_H 
#define LAYOUT_H 

#include <QtWidgets/QMainWindow> 
#include "ui_layout.h" 

class layout : public QMainWindow 
{ 
    Q_OBJECT 

public: 
    layout(QWidget *parent = 0); 
    ~layout(); 

private: 
    Ui::layoutClass ui; 
}; 

#endif // LAYOUT_H 

main.cppに

#include "layout.h" 
#include <QtWidgets/QApplication> 
#include <QtWidgets/QPushButton> 
#include <QtWidgets/QHBoxLayout> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    layout w; 
    QHBoxLayout hb; 
    QPushButton b("button 0"); 
    QPushButton b1("button 1"); 

    hb.addWidget(&b); 
    hb.addWidget(&b1); 

    w.setLayout(&hb); 
    w.show(); 
    return a.exec(); 
} 

は私の結果である: enter image description here

この問題を解決するにはどうすればよいですか?

+0

レイアウトは何ですか? – eyllanesc

+0

@eyllanesc QHBoxLayoutとQVBoxLayout – lens

+0

QVBoxLayoutとQHBoxLayoutにはshowメソッドがありません。 – eyllanesc

答えて

1

QMainWindowは、QStatusbar、QMenuBarなどのデフォルトのウィジェットを持っているため、特別なウィジェットです。このウィジェットで作業するときは、新しい要素をcentralWidgetに配置する必要があります。以下に示すように

enter image description here

だから我々は我々のcentralWidgetなりウィジェットを割り当てる必要があり、その後、これに、私たちは、レイアウトを追加:

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    layout w; 
    w.setCentralWidget(new QWidget); 


    QHBoxLayout hb; 
    QPushButton b("button 0"); 
    QPushButton b1("button 1"); 

    hb.addWidget(&b); 
    hb.addWidget(&b1); 

    w.centralWidget()->setLayout(&hb); 
    w.show(); 

    return a.exec(); 
} 
+0

この解決策は私の質問を解決することができますが、なぜ私たちはcentralWidgetを使用する必要があるのか​​完全に理解していません。いくつかの記事や文書を私に提供できますか?私はそれらの情報を読むでしょう。 – lens

+0

私の答えの最初の言葉はリンクを持っています、それは主要なドキュメンテーションですが、あなたがそれを見ていないなら、これは:http://doc.qt.io/qt-5/qmainwindow.htmlです。私の答えを正しいものとしてマークすることを忘れないでください。 – eyllanesc

関連する問題