2012-02-06 61 views
0

问题:如果我将应用程序的工具栏拉离窗口框架并将其浮动,我无法再对接它。我的窗口层次结构相当复杂,所以我不确定哪一部分我不得不用棍子戳到它的行为。Qt工具栏不会重新编译

我的Qt应用程序使用stackWidget作为它的中心控件。在其中一个包含小部件的堆栈中,我需要一个工具栏和一个图形视图。当我浮动该工具栏时,图形视图展开消耗整个屏幕空间并拒绝缩小以允许工具栏再次停靠。

相关代码如下。我坚持其在自己的项目,看看发生了什么事情,所以减去在头几个额外的定义,这应该编译:

QVBoxLayout* layout0 = new QVBoxLayout(ui->centralWidget); 
stack = new QStackedWidget(); 
layout0->addWidget(stack); 

QWidget* screen1 = new QWidget(); 
QVBoxLayout* layout1 = new QVBoxLayout(screen1); 
QToolButton* tool = new QToolButton(); 
tool->setIcon(QIcon(":/images/sample.bmp")); 
tool->setIconSize(QSize(400,400)); 
QObject::connect(tool,SIGNAL(clicked()),this,SLOT(onPage2())); 
layout1->addWidget(tool); 
stack->addWidget(screen1); 

QWidget* screen2 = new QWidget(); 
QVBoxLayout* layout2 = new QVBoxLayout(screen2); 
QGraphicsView* gview = new QGraphicsView(); 
layout2->addWidget(gview); 
stack->addWidget(screen2); 

QToolBar* toolbar = new QToolBar(); 
toolbar->addAction("home",this,SLOT(onPage1())); 
this->addToolBar(Qt::TopToolBarArea,toolbar); 
+0

在键入这个过程中,我发现设置工具按钮的最小尺寸似乎可以解决问题。 – AndrewS 2012-02-06 19:31:51

回答

0

对于堆部件,Qt的要求堆栈内每个插件有足够的空间来添加工具栏,然后让它停靠。奇怪的是,在你解开工具栏或扩展窗口之前,布局可能适合屏幕,但Qt可能会对此大小感到不满。

首先找到你的麻烦堆栈。接下来,增加窗口大小,修改小部件布局,和/或更改堆栈内的子小部件的大小约束以允许工具栏停靠。