Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt工具栏赢得';t雷多克_Qt_Resize_Toolbar - Fatal编程技术网

Qt工具栏赢得';t雷多克

Qt工具栏赢得';t雷多克,qt,resize,toolbar,Qt,Resize,Toolbar,问题:如果我将我的应用程序工具栏从窗口框架中拉出并浮动它,我将无法再次停靠它。我的窗口层次结构相当复杂,所以我不确定我必须用棍子戳哪个部分才能使它正常工作 我的Qt应用程序使用stackWidget作为其中心小部件。在堆栈包含的一个小部件中,我需要一个工具栏和一个图形视图。当我浮动工具栏时,图形视图将扩展以占用整个屏幕空间,并拒绝收缩以允许工具栏再次停靠 相关代码如下。我将它放在自己的项目中,以查看发生了什么,因此在标题中减去一些额外的定义,这应该可以编译: QVBoxLayout* layou

问题:如果我将我的应用程序工具栏从窗口框架中拉出并浮动它,我将无法再次停靠它。我的窗口层次结构相当复杂,所以我不确定我必须用棍子戳哪个部分才能使它正常工作

我的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);

对于堆栈小部件,Qt要求堆栈中的每个小部件都有足够的空间来添加工具栏,然后才允许您停靠工具栏。奇怪的是,在你松开工具栏或打开窗口之前,屏幕上可能会有一个布局,但Qt可能对这个尺寸不满意


首先,找出你的问题所在。接下来,增加窗口大小,修改窗口小部件布局,和/或改变堆栈中子窗口小部件的大小限制,以允许工具栏停靠。

在键入此内容的过程中,我发现为toolbutton设置最小大小似乎可以解决问题。