- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在我当前的项目中,我实现了一个 Qt 应用程序,其中包含多个 MDI 窗体,其中包含多个 QDockWidget
。
应用程序大致如下所示:
这是代码片段:
#include <QApplication>
#include <QMainWindow>
#include <QMdiArea>
#include <QDockWidget>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
auto window = new QMainWindow;
auto mdi = new QMdiArea;
window->setCentralWidget(mdi);
auto subWindowWidget = new QMainWindow;
mdi->addSubWindow(subWindowWidget);
auto dock1 = new QDockWidget("Dock1");
dock1->setWidget(new QLabel("Label1"));
dock1->setAllowedAreas(Qt::DockWidgetArea::AllDockWidgetAreas);
subWindowWidget->addDockWidget(Qt::DockWidgetArea::BottomDockWidgetArea, dock1);
auto dock2 = new QDockWidget("Dock2");
dock2->setWidget(new QLabel("Label2"));
dock2->setAllowedAreas(Qt::DockWidgetArea::AllDockWidgetAreas);
subWindowWidget->addDockWidget(Qt::DockWidgetArea::BottomDockWidgetArea, dock2);
window->show();
return app.exec();
}
我真的很满意程序的行为方式和功能。但是有一个缺点:即使我能够将停靠小部件停靠在左侧和右侧,我也无法将它们停靠在顶部和底部。
希望这里有人可以帮助我。我真的需要这个功能。
最佳答案
您没有设置 central widget到你的第二个 QMainWindow
。要实现您想要的行为,请尝试将您的第一个 QDockWidget
设置为中央小部件。
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
auto window = new QMainWindow;
auto mdi = new QMdiArea;
window->setCentralWidget(mdi);
auto subWindowWidget = new QMainWindow;
mdi->addSubWindow(subWindowWidget);
auto dock1 = new QDockWidget("Dock1");
dock1->setWidget(new QLabel("Label1"));
dock1->setAllowedAreas(Qt::AllDockWidgetAreas);
subWindowWidget->setCentralWidget(dock1);
auto dock2 = new QDockWidget("Dock2");
dock2->setWidget(new QLabel("Label2"));
dock2->setAllowedAreas(Qt::AllDockWidgetAreas);
subWindowWidget->addDockWidget(Qt::BottomDockWidgetArea, dock2);
window->show();
return app.exec();
}
关于c++ - QMdiArea 子窗口中的 QDockWidget 不能停靠在顶部和底部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37591979/
我有一个函数负责初始化自定义小部件并将其添加到 MdiArea。当我第一次调用它时它工作正常。但是如果我再次调用,它正在初始化自定义小部件而不是添加进入 MdiArea。我在这里提到了这个功能:- v
Qt 开发者!有没有办法在我的 midArea 背景上添加图像,如下图所示? 我知道我可以用这样的东西 QImage img("logo.jpg"); mdiArea->setBackground(i
我试图在 QMdiArea 中垂直排列我的子窗口。我在网上看到了很多例子,他们都在做和我在这里做的一样的事情。 我有两个 textEdits 需要垂直平铺,它们都覆盖了一半的屏幕。因此,在 MainW
所以我的代码的非QMdiArea 版本, MyWidget::MyWidget(QWidget* parent) { ... layout()->setSizeConstraint( QL
在我当前的项目中,我实现了一个 Qt 应用程序,其中包含多个 MDI 窗体,其中包含多个 QDockWidget。 应用程序大致如下所示: 这是代码片段: #include #include #i
我正在尝试将 Qt4 中 QMdiArea 小部件的背景 QBrush 设置为系统颜色的渐变。 这是我现在的一些代码: QPrios::QPrios(int &argc, char **argv):
我在 Qt 4.4 中使用 QMdiArea。 如果创建了一个新项目,我将一些子窗口添加到QMdiArea。我想禁止用户在运行时关闭子窗口。仅当关闭整个应用程序或创建新项目时,才应关闭子窗口。 我该怎
我想用QSplitter将QMdiarea应用到QMainwindow,关于QMdiarea的帖子很少,但没有其中真正解释了如何应用于此类 QtWidgets。 我的代码: class Mywindo
我正在编写某种编辑器,我希望允许用户在 MdiArea 内自由移动窗口,并允许他们将窗口移出 MdiArea、移出应用程序的主窗口。 我应该怎样做才能实现这个目标? 最佳答案 我设法找到了一个适用于
我正在使用 Qt 应用程序并尝试通过辅助功能界面实现 UI 自动化。这一切都很好,除了这个应用程序有一个包含 QMdiSubWindow 的 QMdiArea 并且这些子窗口中包含的任何内容对自动化界
我是一名优秀的程序员,十分优秀!