繁体   English   中英

调整大小后的Qt窗口调整大小事件

[英]Qt window resize event after resize is done

我在QDialog中有一个QtChart,我使用一个简单的QWidget在屏幕上显示它。 每当用户调整对话框窗口的大小时,我都需要调整其大小。

这是将图表添加到对话框(在构造函数中)的方式:

// Setup chart view to show the chart
mChartView = new QChartView(mChart, ui->widget);
mChartView->setParent(this);
mChartView->resize(ui->widget->size());
mChartView->setRenderHint(QPainter::Antialiasing);

我在自己的对话框中覆盖了QDialog的resizeEvent

void CurveDialog::resizeEvent(QResizeEvent *event)
{
    mChartView->resize(ui->widget->size());
}

这可以正常工作,并且图表可以调整大小...但是问题是速度太慢了! 因为它将为用户拖动窗口角以调整大小的所有步骤调整大小!

仅在完成调整大小后才可以调整大小吗? 我想使用计时器,但这看起来像是肮脏的骇客! 还有更好的主意吗?

Qt提供了一个布局系统来管理小部件内子小部件的几何形状。 布局将安排每个孩子的大小和位置,以确保将占用所有可用空间。

当调整父部件的尺寸时,布局将自动调整子部件的尺寸:

QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing);

QDialog* dialog = new QDialog();
QVBoxLayout* layoutDialog = new QVBoxLayout(dialog);

QWidget* widget = new QWidget();
QVBoxLayout* layoutWidget = new QVBoxLayout(widget);

layoutDialog->addWidget(widget);
layoutWidget->addWidget(chartView);

dialog->exec();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM