在QDodckWidget中,在停靠的widget上面绘画/绘图
我在QT中有一个继承QDockWidget的类.该类包含另一个小部件. 在我的qdoc​​kwidget遗传类中定义一个函数的可能性是否有可能在包含的小部件的顶部绘制东西?就像绘画独立于包含的小部件,但要链接到继承的类. 谢谢 解决方案 确保可能.实际上,这很简单.您需要放置一个位于QDockWidget中其他所有内容的孩子小部件.为此,它一定是您添加到Dockwidget的最后一个孩子的小部件.该小部件必须不画其背景,然后可以吸引任何Dockwidget的孩子.小部件的大小必须跟踪父窗口小部件的大小. 下面是一个独立的例子. // https://github.com/KubaO/stackoverflown/tree/master/questions/overlay-line-11034838 #include #if QT_VERSION > QT_VERSION_CHECK(5,0,0) #include #end
0 2023-05-16
编程技术问答社区
如何禁用QDockWidget标题栏的上下文菜单
我有几个QDOCKWIDGETS,它们都不是Closabale(使用QT 5.6).因此,当右键单击其中一个的标题栏时显示的上下文菜单仅禁用了条目,我想禁用整个上下文菜单. 我试图将Contexts -Menupolicy设置为nocontextmenu,而无需成功. 然后,我尝试使用QDockWidget的子类,覆盖ContextMenueVent并忽略它.菜单仍在显示. 然后,我尝试安装事件过滤器来捕获ContextMenueVent,但它没有捕获任何,只是PaintEvents,Resizeizeevents等. 我没有想法……任何帮助都将不胜感激! 解决方案 根据注释,必须将QDockWidget上的上下文菜单策略设置为Qt::PreventContextMenu ... dock_widget->setContextMenuPolicy(Qt::PreventContextMenu); 而不是简单的Qt::NoContextMenu.从文档
78 2023-03-30
编程技术问答社区
pyqt : 在Maya中调整qdockwidget的大小
我已经为玛雅制作了工具.我在QMainWindow中使用了QDockWidget进行整个UI组成.众所周知,我可以"保存"和"恢复"以保留Qtoolbar,QdockWidget等. 我不知道原因,但是在Maya中,我不能"恢复"实际状态.它可以恢复QToolbar的所有状态,除了QdockWidget的大小外,QDockWidget.因此,我想尝试以编程方式调整QDockWidget大小.有什么方法可以做到吗? 解决方案 尝试重新实现class MyWidget(QtGui.QWidget): _sizehint = None def setSizeHint(self, width, height): self._sizehint = QtCore.QSize(width, height) def sizeHint(self): if self._sizehint is not None: return self._sizehint return super(MyWidg
24 2023-03-24
编程技术问答社区
没有中央部件的QDockWidget布局
我对QDockWidget有问题.我正在使用QT Designer,并且我想构建一个只有码头网络的应用程序,并在上方有一个小条用于属性.问题是我没有主Qwidget就无法构建应用程序(我的意思是 qdockwidgets). 这是我的屏幕截图: 注释1) - 这是我无法删除的空间.当我从XML删除它时,QT设计器崩溃.如果它不可移动,我如何设置左qdockwidget和右QDOCKWIDGET,以具有整​​个窗口宽度的一半? 解决方案 您可以使用setCentralWidget(0); 删除CentralWidget 其他解决方案 这不能在QT设计器中完成.但是,有一个 qt论坛线程一种以编程方式进行操作的方法. 首先,您必须将主窗口设置为 docknestingenabled 属性属性true true在QT Designer中.然后,创建UI后,编程删除中央小部件,然后删除,重新添加并重新显示所有码头小部件. 当我测试此问题时,我发现我需要用单次
0 2023-03-03
编程技术问答社区
一个QDockWidget上的多个小工具
我正在制作一个小应用程序,用于使用QT和C ++在图像上应用各种过滤器. 我的问题是,是否可以在 qdockwidget 上添加多个小部件? 因为我想添加按钮以重新应用码头上的最后5个过滤器. 这是我想实现的示例. 解决方案 可以将多个QWidget s添加到任何QWidget中. 看起来您可能想做这样的事情: QDockWidget dock(QLatin1String("Last filters")); QWidget* multiWidget = new QWidget(); QVBoxLayout* layout = new QVBoxLayout(); QPushButton* filter1 = new QPushButton(QLatin1String("Filter number 1")); QPushButton* filter2 = new QPushButton(QLatin1String("Filter number 2")); QPus
24 2023-03-03
编程技术问答社区
浮动子QMainWindow (QMainWindow作为主QMainWindow的子部件)
我将QMainWindow用作我的主QMainWindow的儿童.我得到了一个可以用于dockable小部件的其他区域(QDockWidget). 根据以下文章,这还可以,它对我也很好. /threads/12569-qmainwindow-as-a-a-a-child-qmainWindow 使QMainWindow表现为普通的小部件,我揭开了窗口标志,在上面的一篇文章中提到了这个技巧. 现在,我还希望能够及其所有停靠的小部件浮动这个孩子QMainWindow.换句话说,我想恢复"使其成为普通小部件"的步骤.不幸的是,这确实不起作用.它从主窗口消失了,但根本看不到. 有什么方法来解决它? // this is the child QMainWindow if (this->m_infoAreaFloating) { // this should give me a floating window besides the main window
36 2023-03-01
编程技术问答社区
QDockWidget的分割器在QMainWindow调整后会跳出。
在我的一个旧程序中,我在Qdockwidget的内部有2列QTableWidget. 在现代建立它(QT 5.10)我似乎必须覆盖桌子的sizehint()才能获得它除了100px之外,要成为一个宽度.哪个有点烦人的(以前不需要这个 - 为什么表格的宽度不是通过默认为标题?) 但是,经过调整,现在还有另一个滋扰:如果用户为码头小部件的分离器进行任何移动,它将在任何窗口大小上丢失.我做了一点MCVE来显示效果...这是启动情况: 然后说用户稍微拖动分离器(可能是扩展,可能是收缩 - 没关系): 现在,他们将窗口的底部边缘稍微拖动一点,然后 snap ,它跳回了首选的大小(当鼠标首次开始拖动时突然的跳跃就发生了): 将水平尺寸策略从QSizePolicy::Preferred更改为QSizePolicy::Ignored似乎并不影响这种行为,也没有调用setStretchLastSection()似乎也没有帮助. 我希望如果垂直缩小窗口大小,则水平分离器根
14 2023-03-01
编程技术问答社区
防止QDockWidget的自动调整行为
QT 5.5.0 在我的应用程序中,我有一个QgraphicsView作为主要小部件和一个用于属性的QdockWidget. 目标是使用户在图形视图中选择一个项目,并根据项目提供适当的属性. i通过将一个包含每个属性小部件的布局带有属性管理器小部件来实现这一目标.我有信号和插槽,以获取当前选择的项目,然后显示()我需要的小部件和hide()剩下的. 这很好! However, when selecting different items, the dock shrinks or grows based on the shown widget.这是非常令人讨厌的,而且很烦人.不过是,当用户手动调整码头大小时,它会保持大小.我希望维护的大小默认而不是这种自动化行为. 我尝试过的事情: 我尝试更改码头和mainwindow的sizepolicy():无效. 我已经为我的属性管理器设置了最小尺寸,这确实可以防止当显示较小的属性时缩小码头.但是,我仍然希望用户能
46 2023-03-01
编程技术问答社区
QDockWidget导致qt崩溃
i具有Ubuntu 11.10中内置的QT版本.并且我正在尝试使用无法真正停靠的QDockWidget(基本上,我只想要一个窗口.我不想让视图成为最高视图,我不想要的,如果我要隐藏它,那么窗口将无法移动). 所以,我基本上是一个新的QT GUI项目,并且除了mainwindow.cpp文件之外,不要更改任何文件,我将其更改为: #include "mainwindow.h" #include "ui_mainwindow.h" #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); QDockWidget *dockWidget = new QDockWidget(this); // Without window managemen
18 2023-03-01
编程技术问答社区
如何找到QDockWidget标题栏的高度?
我试图找到QDockWidget标题栏的高度,以便对自定义布局进行一些智能尺寸,但是标题栏不是一个单独的小部件,它内置在码头小部件的私人布局中,并且没有成员可以访问它.还有其他方法可以找到其高度吗? 解决方案 是的,您可以使用Dock的QStyle元素的pixelMetric成员函数找到标题栏的高度.您可能还需要查询保证金,因为它会在标题栏周围增加空间,并且布局将需要意识到它.示例: QDockWidget * myDock = new QDockWidget; int titleBarHeight = myDock->style()->pixelMetric(QStyle::PM_TitleBarHeight); int titleBarMargin = myDock->style()->pixelMetric(QStyle::PM_DockWidgetTitleMargin); 其他解决方案 您总是可以运行qobject :: findchild wih是一个合适
110 2023-03-01
编程技术问答社区
Tabify 3 QDockWidget
如何在qmainwindow中为3个小部件创建一个tabified dock? 我正在使用代码: widget1 = new QDockWidget(this); widget1 ->setObjectName("name1"); addDockWidget(Qt::LeftDockWidgetArea, widget1); widget2 = new QDockWidget(this); widget2 ->setObjectName("name2"); addDockWidget(Qt::LeftDockWidgetArea, widget2); tabifyDockWidget(widget2, widget1); widget3 = new QDockWidget(this); widget3->setObjectName("name3"); addDockWidget(Qt::LeftDockWidgetArea, widget3); tabifyDockWidge
6 2023-02-28
编程技术问答社区
创建一个QDockWidget,调整其内容的大小。
我有一个应用程序,其中需要根据用户输入在运行时间将固定尺寸的儿童小部件编程添加到码头小部件.我想将这些小部件添加到QT :: RightDockarea上的码头中,从上到下,直到它耗尽太空,然后创建一个新列并重复(本质上只是流程布局的反面示例我可以使用事件过滤器使Dock小部件正确调整大小,但是调整大小的码头的几何形状不会改变,并且某些小部件在主窗口外绘制.有趣的是,调整主窗口的大小,或浮动并解开码头,使其"弹出"回到正确的位置(我无法找到以程​​序为程序复制此方法的方法) 我无法使用任何内置的QT布局 是否有某种方法可以让码头在调整大小大小后更新其顶部坐标到适当的位置? 我认为这可能是一般的兴趣,因为在QT中获得直观的布局管理行为可能是人类已知的最难的事情. 视觉Exmaple: 复制的代码这是下面给出的示例. 使用按钮向程序中添加4个小部件 调整绿色底部码头大小,直到显示两个小部件.请注意,剩下的3个小部件正在主窗口外面涂漆,但是码头是正确的大小
20 2023-02-24
编程技术问答社区
QDockWidget的可拖动标签
我正在使用qdockwidgets,并将其中两个放在应用程序的左侧,以便可以使用标签在它们之间进行选择.但是,QT对此的默认行为看起来很恐怖,并且不直觉.它不能拖动选项卡以移动小部件,而是将另一个条放在所选选项卡下方(具有相同名称)的下方,必须拖动.作为用户,很难弄清楚这一点. (我的qdoc​​kwidgets是"属性"和"库") 是否有一种方法可以摆脱第二个栏并制作它,以便我可以通过拖动标签来移动我的qdoc​​kwidgets? 解决方案 如果您将QTabWidgets添加到源自QMainWindow的主窗口中,则可以尝试tabifyDockWidget. 它像您想要的那样,它可以像两个QDockWidgets一样,当然可以拖动它们. dockWidget1 = new QDockWidget("Tab1") ; dockWidget2 = new QDockWidget("Tab2") ; this->addDockWidget(Qt::LeftDock
16 2023-02-24
编程技术问答社区
在QMainWindows之间拖动QDockWidgets
我有一个问题,关于在QMainWindows之间拖动QDOCKWIDGETS.我有一个带有不同" Dockareas"的应用程序,该应用程序具有一个或多个QdockWidgets的QMainWindow成员.此外,我想将QdockWidgets拖放到其他已经浮动的QdockWidgets(不打击!)中. 要在拖放上具有良好的悬停效应,浮动的Qdockwidgets与QMainWindow成员一起嵌入了我的Dockarea的新实例中.现在,我拦截了拖动Qdockwidget的Mousemove事件,并在徘徊在我的Dockarea的另一个Qmainwindow上时更改其父.不幸的是,这会导致崩溃,看起来像原始的Qlayoutitem(此QDockWidget所在的地方)已经消失了. void QDockWidgetPrivate::moveEvent(QMoveEvent *event) { // ... // now this widgetItem member
38 2023-02-24
编程技术问答社区
C++以编程方式调整停靠的Qt QDockWidget的大小?
我刚刚开始从事一个新的C ++/QT项目.这将是一个基于MDI的IDE,带有停靠的小部件,例如文件树,对象浏览器,编译器输出等.到目前为止,一件事正在困扰我:我无法弄清楚如何编程制作QDockWidget较小.例如,此片段创建我的底部码头窗口,"构建信息": m_compilerOutput = new QTextEdit; m_compilerOutput->setReadOnly(true); dock = new QDockWidget(tr("Build Information"), this); dock->setWidget(m_compilerOutput); addDockWidget(Qt::BottomDockWidgetArea, dock); 启动时,我的程序看起来像这样(请记住开发的早期阶段): 但是,我希望它看起来像这样: 我似乎无法实现这一目标. QDOckWidget上的QT引用说: 自定义尺寸提示,最小和最大尺寸以及尺寸策略应
18 2023-02-24
编程技术问答社区
隐藏Qt标签的标签文本而不将文本设置为空字符串
我只需要一个图标QTabWidget: 如何将标签的标签文本隐藏在QT中?我无法将文本设置为一个空字符串(""),因为我正在使用停靠的小部件(QDockWidget),并且标签文本是自动设置的(如果小部件是浮动的,则我需要它. . 但是,在选项卡模式下,我只想显示(选项卡的)图标. 可能的方法: 字体大小为0? 我需要创建自己的酒吧类,并以 任何更容易/清洁的东西? ---编辑--- 好的,"设置为空字符串的窗口标题,并重置原始文本"方法.我正在为此使用topLevelChanged信号.但是,它有一些缺点,因为空文本仍然占据了一些空间.另一个问题,文本该工具提示已经消失了,我无法将其设置回. 我目前正在尝试的是"文本空"和Prasad Silva的方法之间.我尝试识别标签内的文本标签并将其大小设置为0,然后将其重置.它略有不同,但会保持文本完整. 顺便说一句,我在标签顶部看到一条线,知道这是什么(它来自哪里)? 编辑:似乎没有"简单的方式
18 2023-02-24
编程技术问答社区
如何正确配置QDockWidget,使其能够显示/隐藏?
我是 Qt GUI 的新手,最初想配置一个 Qt Dock Widget,它在按下一个键时显示,比如“A",当按下另一个键时隐藏,比如“B".但是经过一番研究,我没有找到任何相关的解决方案. 我尝试创建一个切换按钮,第一次按下时会显示停靠小部件,再次按下时会隐藏它.它工作正常,但有什么办法可以做得更好或分配任何键来显示和隐藏停靠小部件? t_button = new QPushButton("B1",this); dockB = new QDockWidget(tr("Panel B"),this); dockB -> setAllowedAreas(Qt::AllDockWidgetAreas); addDockWidget(Qt::RightDockWidgetArea,dockB); dockB -> hide(); connect(t_button,SIGNAL(clicked()),this,SLOT(toggle())); void MainWindow::to
2180 2022-08-11
编程技术问答社区
如何使QDockWidget出现在任务栏中?
我使用了 QDockWidget 的一个子类,并带有一个小技巧.“topLevelChanged"信号连接到这个成员槽: void MyDockWidget::updateWindowFlags(bool topLevel) { if (topLevel == true) { setWindowFlags(Qt::Dialog|Qt::CustomizeWindowHint|Qt::WindowTitleHint|Qt::WindowMaximizeButtonHint|Qt::WindowCloseButtonHint); // "setWindowFlags" hides the widget, show it again show(); } } 这很好用(至少在我的目标 Windows 上)并在标题栏中显示“最大化"按钮. 现在我想让停靠小部件的行为类似于“顶级"小部件:并不总是位于主窗口顶部并出
310 2022-08-11
编程技术问答社区
QDockWidget浮动时改变背景颜色
我有一个具有透明背景的 QDockWidget,但我想在它浮动时更改背景颜色或背景图像.qt 样式表似乎没有伪状态来告诉您它们是否浮动,所以我想知道:这可能吗? 解决方案 找到了解决方案.在代码中添加如下连接: connect(knobDock, &QDockWidget::topLevelChanged, [&] (bool isFloating) { if (isFloating) { setAttribute(Qt::WA_TranslucentBackground, false); setAttribute(Qt::WA_NoSystemBackground, false); } }); 这将导致停靠小部件在停靠时使用样式表中指定的任何背景,但停靠时它将是透明的(即显示主窗口背景).
706 2022-08-11
编程技术问答社区
改变内容时的QDockWidget行为
我的 QDockWidget 之一出现问题.我在 QDockwidget 中有几个 QWidget 项目,有时可见有时不可见. 我希望我的 QDockWidget 根据其内容调整自身大小......不仅当 QWidgets 出现在其中,而且当它们消失时...... 到目前为止,我的 QDockWidget 会在其中显示更多 QWidgets 时自行调整大小,但是当我让它们消失时, QDockWidget 会保持原来的大小... 有什么可以帮忙的吗? 提前致谢! 解决方案 多年来,关于在 QMainWindow 停靠区中控制 QDockWidget 的大小的各种帖子.我也一直在努力解决这个问题,并且只能实现部分且有些不令人满意的解决方案.主要问题(如果你原谅双关语的话)是无法从负责管理停靠区域的 QMainWindow 的上下文中掌握停靠机制.尝试使用布局管理 - 尺寸策略和尺寸提示控件 - 无效;QMainWindow 在更改停靠区大小时会做自己的事情.
224 2022-08-11
编程技术问答社区