2017-03-12 77 views
1

我是Qt新手,我有這個代碼應該在Qt主窗口中顯示滑動條和數字框。但我得到的只是主窗口本身,沒有任何內容。我沒有使用show()函數,但沒有happend我的Qt程序顯示帶標題的空白窗口

#include "mainwindow.h" 
#include <QApplication> 
#include <QSpinBox> 
#include <QSlider> 
#include <QHBoxLayout> 
#include <QtGui/QApplicationStateChangeEvent> 



int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 
    QMainWindow program ; 

    program.setWindowTitle("Title of window"); 


    QSpinBox *spinboxx = new QSpinBox(); 
    QSlider *slider = new QSlider(Qt::Horizontal); 
    spinboxx->setRange(1,40); 
    slider->setRange(1,40); 

QObject::connect(spinboxx, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int))); 
QObject::connect(slider, SIGNAL(valueChanged(int)), spinboxx, SLOT(setValue(int))); 
QHBoxLayout *layout = new QHBoxLayout; 

layout->addWidget(slider); 
layout->addWidget(spinboxx); 
program.setLayout(layout); 
    program.show(); 

    return app.exec(); 
} 
+1

邊注:請不要使用''包括。所有'Qt'包括應該是單元素,或者''或''。模塊/類格式隱藏了項目配置錯誤,並且只是將編譯錯誤推到鏈接時間,問題一直存在於'.pro'文件中(或者過時的生成文件夾)。 –

回答

2

編譯代碼時,有一個重要的警示:

的QWidget :: setLayout的:嘗試QLayout 「」 關於QMainWindow的 「」, 已經有一個佈局

事實上,你不能設置QMainWindow佈局,因爲它有自己的佈局。來自Documentation of Qt5

主窗口提供了一個構建應用程序的用戶界面的框架。 Qt擁有QMainWindow及其相關的主窗口 管理類。 QMainWindow有其自己的佈局,您可以添加 QToolBars,QDockWidgets,QMenuBar和QStatusBar。該佈局有一箇中心區域,可以被任何類型的小部件佔用。

你應該一個部件分配給QMainWindow程序而不是像這樣:

QWidget *window = new QWidget; 
QSpinBox *spinboxx = new QSpinBox(); 
QSlider *slider = new QSlider(Qt::Horizontal); 

QHBoxLayout *layout = new QHBoxLayout; 
layout->addWidget(slider); 
layout->addWidget(spinboxx); 

window->setLayout(layout); 


QMainWindow program ; 
program.setWindowTitle("Title of window"); 
program.setCentralWidget(window); 
program.show(); 

PS:我不停的命名慣例選擇使修改更清晰。我寧願用部件窗口窗口程序

+0

非常有意義!非常感謝! –