我有内置到ubuntu 11.10中的Qt版本。我正在尝试使用一个不能真正停靠的QDockWidget (基本上,我只想要一个浮动的窗口。我不想让视图成为顶层视图,因为那样我就会有操作系统窗口栏在那里,这是我不想要的,如果我把它隐藏起来,那么窗口就不能移动)。
因此,我基本上创建了一个新的Qt项目,并且不更改任何文件,除了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中的一个bug。
发布于 2012-03-05 10:23:07
您使小部件浮动,但不是可浮动的。
dockWidget->setFeatures( QDockWidget::DockWidgetMovable |
QDockWidget::DockWidgetFloatable );你还可以拥有一个可移动的无边框窗口,只需控制鼠标在mousePressEvent、mouseReleaseEvent和mouseMoveEvent之间拖动即可。
如何隐藏现在无用的浮动按钮
根据QDockWidget源代码,如果有标题栏小工具,则不会显示“浮动按钮”:
dockWidget->setTitleBarWidget(new QLabel("Dock Widget", dockWidget));或者,因为它有一个名称(没有文档),所以您可以显式地隐藏它:
QAbstractButton * floatButton =
dockWidget->findChild<QAbstractButton*>("qt_dockwidget_floatbutton");
if(floatButton)
floatButton->hide();https://stackoverflow.com/questions/9559666
复制相似问题