【问题标题】:QDockWidget Content bug with titlebarQDockWidget 带有标题栏的内容错误
【发布时间】:2012-10-31 05:57:13
【问题描述】:

这是我的问题:我创建了一个 QDockWidget 并在其中放置了一个 QGraphicsView,当它浮动时,所有内容都正确显示,但如果将它停靠在某个地方,我的内容的起始 X 和 Y 位于 QDockWidget 的标题栏上。显然,它应该在:

tilesetWindow = new QDockWidget(tr("Tileset"), this);
tilesetWindow->setMinimumSize(256,256);
tilesetWindow->setFloating(true);
connect(tilesetWindow, SIGNAL(visibilityChanged(bool)), this, SLOT(triggeredTileset()));

tilesetViewer = new QGraphicsView(tilesetWindow);
tilesetViewer->resize(256,256);
tilesetViewer->show();

一张图片来说明这一点:http://img86.xooimage.com/files/d/7/6/problem-391a96a.png

我尝试将 QGraphicsView 放入容器中,然后放入 QDockWidget 中,但结果与上述相同。这是我为 QDockWidget 编写代码的唯一地方。

如何让它在停靠时从正确的位置开始?

编辑:

我尝试了一个新的 QtProject 并制作了一个带有 QTextBrowser 的 QDockWidget 并且有同样的错误:

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QDockWidget *dock = new QDockWidget(this, 0);
    dock->setFloating(true);

    QTextBrowser *t = new QTextBrowser(dock);
    t->show();
}

我错过了一些我认为...

Qt 创建者 2.4.1 基于Qt 4.7.4(32位)

【问题讨论】:

  • 这种问题往往发生在小部件的父级不正确时。 tilesetWindowQMainWindow 的直系子代吗?
  • this 在代码中,是QMainWindow,所以是的。我试过:this->addDockWidget(Qt::LeftDockWidgetArea, tilesetWindow, Qt::Horizontal); 但结果相同。
  • 嗯。那我就帮不了你了,但是如果你提供你的 Qt 版本,它可能会帮助其他人。

标签: qt position qdockwidget


【解决方案1】:

将QDockWidget设置为Parent后,还需要将QDockWidget的Widget设置为QGraphicsView,或者其他你想要的。

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);

QDockWidget *dock = new QDockWidget(this, 0);
dock->setFloating(true);

QTextBrowser *t = new QTextBrowser(dock);
dock->setWidget(t);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 2016-12-13
    • 1970-01-01
    • 2017-10-24
    • 2015-08-17
    • 1970-01-01
    相关资源
    最近更新 更多