首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调整QMainwindow大小以适应Qdockwidget大小

调整QMainwindow大小以适应Qdockwidget大小
EN

Stack Overflow用户
提问于 2014-08-26 11:44:11
回答 2查看 881关注 0票数 0

我有一个QMainWindow和一个嵌套在里面的QDockWidget

我展示了一些图表,所以QDockWidget扩展了,但是QMainWindow保持了它的初始大小,所以我必须用鼠标调整它的大小。

那么,如何使QMainWindow每次调整为QDockWidget大小?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-26 13:32:45

最后很简单。

我拿我的Qsize of我的QDockWidgets,我调整了我的QMainWIndow的尺寸到这个。

例如,我有两个QDockWidget并排,所以我所做的是

代码语言:javascript
复制
QSize siz =  Dock->size();
QSize siz2 =  Dock2->size();
resize(siz.width()+siz2.width(),siz.height);
票数 1
EN

Stack Overflow用户

发布于 2014-08-26 13:20:52

您可能希望重写resizeEvent小部件的QDockWidget函数。为此,您需要对QDockWidget进行子类。

代码语言:javascript
复制
class MYDockwidget : public QDockWidget
{
    Q_OBJECT
public:
    MYDockwidget(QWidget *parent = 0):
    QDockWidget(parent)
    {}

protected:
    void resizeEvent(QResizeEvent *event)
    {
        QDockWidget::resizeEvent(event);
        // Calulate Main window size here.
        // the main window is accesible
        // through the parent property.
    }
};

这种方法可以工作,但是可以将QDockWidget的resizeEvent绑定到QMainWindow上。正确的解决方案是在QDockWidget的大小改变时发出信号。

为此,您将需要定义一个自定义信号,当然您希望该信号包含有关事件的信息,因此我们的信号将使用QSize参数发送。

代码语言:javascript
复制
class MYDockwidget : public QDockWidget
{
    Q_OBJECT

public:
    MYDockwidget(QWidget *parent = 0):
    QDockWidget(parent)
    {}

signals:
    void sizeChanged(QSize);
protected:
    void resizeEvent(QResizeEvent *event)
    {
        QDockWidget::resizeEvent(event);
        emit sizeChanged(event->size());
    }
};

之后,您可以编写如下代码:

代码语言:javascript
复制
// Inside your main window.
public slots:
    void on_dock_size_changed(QSize)    

MYDockwidget *dock = new MYDockwidget(this);
connect(dock, SIGNAL(sizeChanged(QSize)), this, SLOT(on_dock_size_changed(QSize)));

void on_dock_size_changed(QSize size)
{
    // resize your main window here.
}

Disadvantage:

您需要手动(以编程方式)设置QDockWidget的属性,除非您管理自己,将您的自定义小部件插入为QTDesigner插件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25505041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档