2012-01-19 81 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