"hijacking" 给定根 QWidget* 的 Qt gui

"hijacking" Qt gui given the root QWidget*

本文关键字:Qt gui hijacking QWidget      更新时间:2023-10-16

我正在为Qt gui应用程序编写一个插件。我只知道顶级窗口QWidget指针,我对窗口的布局没有特别的了解。

有没有一种简单的方法可以向此窗口添加小部件,用于占据窗口底部的 exampe,例如工具栏?

也许将所有窗口内容移动到新的QWidget(a(,并创建另一个QWidget(

b(,其vbox布局包含(a(和我的新工具栏QWidget。听起来不太容易...也许有一个更简单的解决方案?

编辑:有没有像Spy++这样的工具可以在运行时显示Qt小部件布局?

如果你能得到一个QWidget*,你可以访问它.layout() 您可以将该布局添加到QVBoxLayout的顶部,并将您的小部件添加到底部。

像这样:

void addWidget() {
  QWidget* mainwindow = getMainWindow();
  auto* newLayout = new QVBoxLayout(mainwindow);
  auto* oldLayout = mainwindow.layout();
  auto* toolbar = getToolbar(mainwindow);
  mainwindow.setLayout(newLayout);
  int stretchMainWindow=1;
  int stretchToolbar=0;
  newLayout->addLayout(oldLayout, stretchMainWindow);
  newLayout->addWidget(toolbar, stretchToolbar);
}

免责声明:这是未经测试的