Панель инструментов Qt не будет заново - PullRequest
0 голосов
/ 06 февраля 2012

Проблема: если я вытаскиваю панель инструментов моего приложения из оконной рамы и плаваю, я не могу закрепить ее снова.Моя иерархия окон довольно сложна, поэтому я не уверен, какую часть мне нужно ткнуть палкой, чтобы заставить ее вести себя.

Мое приложение 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);

1 Ответ

0 голосов
/ 15 февраля 2012

Для стекового виджета Qt требует, чтобы у каждого виджета в стеке было достаточно места, чтобы добавить панель инструментов, прежде чем она позволит вам закрепить ее.Как ни странно, раскладка может поместиться на экране до того, как вы открепите панель инструментов или развернете окно, но Qt может быть недоволен этим размером.

Сначала найдите свой стек проблем.Затем увеличьте размер окна, измените компоновку виджета и / или измените ограничения на размер подвиджетов в стеке, чтобы панель инструментов могла пристыковаться.

...