调整QMainwindow的大小以适应Qdockwidget的大小
Resize QMainwindow to fit Qdockwidget size
我有一个QMainWindow
和一个嵌套在其中的QDockWidget
。
我显示了一些图形,所以QDockWidget
展开,但QMainWindow
保持其初始大小,所以我必须使用鼠标调整其大小。
那么,如何每次都将QMainWindow
大小调整为QDockWidget
大小呢?
最后很容易。
我取QDockWidgets
的Qsize
,并将QMainWIndow
调整为这个大小。
例如,我有两个并排的QDockWidget,所以我所做的是
QSize siz = Dock->size();
QSize siz2 = Dock2->size();
resize(siz.width()+siz2.width(),siz.height);
您可能需要重写QDockWidget
小部件的resizeEvent
函数。为此,您需要对QDockWidget
进行子类化。
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
参数发射。
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());
}
};
之后,您可以编写如下代码:
// 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.
}
缺点:
您将需要手动(以编程方式)设置QDockWidget
的属性,除非您自己将自定义小部件作为QTDesigner插件插入。
相关文章:
- 为char数组调整zlib-zpipe
- 调整大小后指向元素值的指针unordered_map有效?
- 在C++中调整向量中的索引
- 哪些库可以通过Opencv调整曝光率
- 如何调整 std::vector of Eigen::MatrixXd 的大小
- Alt+Enter 在 Win32 应用中,管理大小调整和分辨率
- 在容量内调整矢量大小时的性能影响
- 将 boost::odeint 与向量类一起使用,而无需调整向量的大小
- 将摄像机调整到俯视图
- Qt 图表条形图调整大小崩溃
- 除非重新绘制大小,否则SDL_Texture在调整大小后呈现黑色
- 调整布局上的 QGraphicsView 小部件的大小
- 如何在构建链接列表时调整头、尾指针
- 如何将旧的 C 样式 #define 映射与现代C++进行调整?
- 当您在此单词中搜索单词时调整字符数组的大小?
- SDL2 调整窗口大小后如何缩放鼠标坐标?
- 如何按另一个向量的方向调整一个向量?
- 调整QMainwindow的大小以适应Qdockwidget的大小
- 调整QDockWidget的大小
- 我如何通过拖动调整大小句柄来折叠QDockWidget