gpt4 book ai didi

C++ 以编程方式调整停靠的 Qt QDockWidget 的大小?

转载 作者:IT老高 更新时间:2023-10-28 12:54:09 34 4
gpt4 key购买 nike

我刚刚开始研究一个新的 C++/Qt 项目。这将是一个基于 MDI 的 IDE,带有用于文件树、对象浏览器、编译器输出等内容的停靠小部件。到目前为止,有一件事困扰着我:我不知道如何以编程方式制作 QDockWidget 更小。例如,这个片段创建了我的底部停靠窗口“构建信息”:

m_compilerOutput = new QTextEdit;
m_compilerOutput->setReadOnly(true);
dock = new QDockWidget(tr("Build Information"), this);
dock->setWidget(m_compilerOutput);
addDockWidget(Qt::BottomDockWidgetArea, dock);

启动时,我的程序如下所示(记住开发的早期阶段):

Actual

但是,我希望它看起来像这样:

Expected

我似乎无法做到这一点。 QDockWidget 上的 Qt 引用是这样说的:

Custom size hints, minimum and maximum sizes and size policies should be implemented in the child widget. QDockWidget will respect them, adjusting its own constraints to include the frame and title. Size constraints should not be set on the QDockWidget itself, because they change depending on whether it is docked

现在,这表明进行此操作的一种方法是继承 QTextEdit 并覆盖 sizeHint() 方法。但是,我不希望仅仅为了这个目的而这样做,我也没有尝试过找到一个可行的解决方案。

我试过调用 dock->resize(m_compilerOutput->width(), m_compilerOutput->minimumHeight()),每次调用 m_compilerOutput->setSizePolicy()它的选项......到目前为止没有任何影响大小。就像我说的那样,我更喜欢用几行代码的简单解决方案,而不是必须创建一个子类来更改 sizeHint()。欢迎提出所有建议。

最佳答案

我让它变得简单:标题:

private void setDockSize(QDockWidget *dock, int, int);
public slots:
void returnToOldMaxMinSizes();

来源:

QSize oldMaxSize, oldMinSize;

void MainWindow::setDockSize(QDockWidget* dock, int setWidth,int setHeight)
{

oldMaxSize=dock->maximumSize();
oldMinSize=dock->minimumSize();

if (setWidth>=0)
if (dock->width()<setWidth)
dock->setMinimumWidth(setWidth);
else dock->setMaximumWidth(setWidth);
if (setHeight>=0)
if (dock->height()<setHeight)
dock->setMinimumHeight(setHeight);
else dock->setMaximumHeight(setHeight);

QTimer::singleShot(1, this, SLOT(returnToOldMaxMinSizes()));
}

void MainWindow::returnToOldMaxMinSizes()
{
ui->dockWidget->setMinimumSize(oldMinSize);
ui->dockWidget->setMaximumSize(oldMaxSize);
}

关于C++ 以编程方式调整停靠的 Qt QDockWidget 的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2722939/

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