gpt4 book ai didi

c++ - QDockWidget导致qt崩溃

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:28:39 25 4
gpt4 key购买 nike

我有 ubuntu 11.10 中内置的 Qt 版本。并且我正在尝试使用无法实际停靠的 QDockWidget(基本上,我只想要一个 float 的窗口。我不想只让 View 成为顶级 View ,因为那样我就会有OS 窗口栏在那里,我不想要,如果我要隐藏它,那么窗口将无法移动)。

所以,我基本上创建了一个新的 Qt Gui 项目,除了 mainwindow.cpp 文件,我没有更改任何文件,我将其更改为:

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QDockWidget>

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QDockWidget *dockWidget = new QDockWidget(this);
// Without window management and attached to mainwindow (central widget)
dockWidget->setFloating( true );
// resize by frame only - not positional moveable
dockWidget->setFeatures( QDockWidget::DockWidgetMovable );
// never dock in mainwindow
dockWidget->setAllowedAreas( Qt::NoDockWidgetArea );
// title
dockWidget->setWindowTitle( "Dock Widget" );
// add contents. etc etc....
dockWidget->show();
}

MainWindow::~MainWindow()
{
delete ui;
}

问题是当我移动小部件时,整个程序崩溃了。我想知道我是否做错了什么,或者只是 qt 中的错误。

最佳答案

您使小部件 float 但不可 float 。

dockWidget->setFeatures( QDockWidget::DockWidgetMovable | 
QDockWidget::DockWidgetFloatable );

你也可以有一个可移动的无框窗口,通过 mousePressEventmouseReleaseEventmouseMoveEvent 处理鼠标拖动。


如何隐藏现在无用的 float 按钮

基于QDockWidget源代码,如果有标题栏小部件,则不显示“ float 按钮”:

 dockWidget->setTitleBarWidget(new QLabel("Dock Widget", dockWidget));

或者因为它有一个名字(没有记录),你可以显式地隐藏它:

 QAbstractButton * floatButton = 
dockWidget->findChild<QAbstractButton*>("qt_dockwidget_floatbutton");
if(floatButton)
floatButton->hide();

关于c++ - QDockWidget导致qt崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9559666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com