2012-02-06 72 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可能會對此大小感到不滿。

首先找到你的麻煩堆棧。接下來,增加窗口大小,修改小部件佈局,和/或更改堆棧內的子小部件的大小約束以允許工具欄停靠。