2012-01-19 95 views
0

這是我使用QT/linux的問題的修剪版本。該程序運行,但顯示的小部件的大小是錯誤的(內容,框架+標籤,不適合)。錯誤的大小在Qt小部件+小部件上傳問題

我明白窗戶的大小應該從其內容(兒童)計算出來。爲什麼在這裏沒有正確地發生?

所以第一個問題是,當然這是爲什麼發生。

真正的程序實際上是在運行時更新小部件的內容。我試圖通過插入main_window->show()(註釋//SHOW1)來模擬該行爲。如果第一次撥打show(),則第二個show()不會顯示小部件的新內容。我試圖與沒有成功更新...

#include <QApplication> 
#include <QtCore> 
#include <QMainWindow> 
#include <QTabWidget> 
#include <QWidget> 
#include <QGroupBox> 
#include <QVBoxLayout> 
#include <QLabel> 

#include <stdlib.h> 


int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 
    QMainWindow* main_window = new(QMainWindow); 
    main_window->setObjectName("main_window"); 
    main_window->resize(800, 600); 
    main_window->setWindowTitle("Hello"); 

    QTabWidget* node_tab_widget = new QTabWidget(main_window); 
// node_tab_widget->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); 
// node_tab_widget->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); 
    node_tab_widget->setObjectName(QString::fromUtf8("tab_widget")); 
    node_tab_widget->resize(500, 400); 

    QWidget* w= new QWidget(node_tab_widget); 
    node_tab_widget->addTab(w, "TAB"); 

    //main_window->show(); //SHOW1 
    QGroupBox* group_widget = new QGroupBox("GROUPNAME", w); 
    QVBoxLayout* group_layout = new QVBoxLayout; 
    group_widget->setLayout(group_layout); 
    group_layout->addWidget((QLabel*)new QLabel(">>>>>>>>>>>>>>>>>>>>>>>>>here1")); 
    group_layout->addWidget((QLabel*)new QLabel("here2")); 
//  group_widget->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); 


    main_window->update(); 
    main_window->show(); 
    return app.exec(); 
} 

回答

0

我真的不明白什麼是你期望的,可以像你從這個代碼會得到什麼結果:

#include <QApplication> 
#include <QtCore> 
#include <QMainWindow> 
#include <QTabWidget> 
#include <QWidget> 
#include <QGroupBox> 
#include <QVBoxLayout> 
#include <QLabel> 
#include <stdlib.h> 

int main(int argc, char *argv[]) { 

QApplication app(argc, argv); 
QMainWindow* main_window = new(QMainWindow); 
main_window->setObjectName("main_window"); 
main_window->resize(800, 600); 
main_window->setWindowTitle("Hello"); 

QTabWidget* node_tab_widget = new QTabWidget(); 
node_tab_widget->setObjectName(QString::fromUtf8("tab_widget")); 
node_tab_widget->resize(500, 400); 

QWidget* w= new QWidget(); 
node_tab_widget->addTab(w, "TAB"); 

QGroupBox* group_widget = new QGroupBox("GROUPNAME", w); 
QVBoxLayout* group_layout = new QVBoxLayout; 
group_widget->setLayout(group_layout); 
group_layout->addWidget((QLabel*)new QLabel(">>>>>>>>>>>>>>>>>>>>>>>>>here1")); 
group_layout->addWidget((QLabel*)new QLabel("here2")); 

QVBoxLayout* gl = new QVBoxLayout; 
gl->addWidget(group_widget); 

main_window->setCentralWidget(node_tab_widget); 
main_window->show(); 
return app.exec(); 
} 

裏面加作爲中央部件的QTabWidget node_tab_widget,其標籤爲TAB

選項卡包含QGroupBox GROUPNAME與兩個標籤(垂直排列)

+0

正如我所說的,代碼做什麼應該,但顯示的內容的大小是錯誤的:標籤控件作爲一個非常結束三個bug梅森窗口右上角的小方塊,而兩個標籤不適合它。 Out看起來好像清理大小 – user1159290

+0

看起來大小的計算是錯誤的...對不起,從智能手機寫入 – user1159290

+0

編譯您的代碼(使用Qt 4.8)我得到一個帶有左上角標籤小部件的窗口,大小500x400。該選項卡內有GROUPNAME小部件,組框內部有標籤。看起來對我好。哪個小部件有錯誤的大小?你可以張貼截圖嗎? – Gianluca