// 2倍缩小
void Widget::on_pushButton_clicked()
{
if ( ui->label->width() <= 0 ) return;
ui->label->setMaximumWidth(ui->label->width()/2);
}
// 2倍放大
void Widget::on_pushButton_2_clicked()
{
int w = ui->label->width() <= 0 ? 1 : ui->label->width()*2;
ui->label->setMaximumWidth(w);
}
// 恢复
void Widget::on_pushButton_3_clicked()
{
ui->label->setMaximumWidth(ui->widget->width());
}
另外 - 根据固定宽高计算子窗口需要适应宽高:
void subWindowAdapter(int widthSrc, int heightSrc)
{
QSize container = this->size(); // parent window
if ( widthSrc <= 0 || heightSrc <= 0 || container.width() <= 0 || container.height() <= 0 ) return;
// calc
int destHeight = static_cast<int>( static_cast<double>(container.width() ) / (static_cast<double>(widthSrc ) / static_cast<double>(heightSrc)) );
int destWidth = static_cast<int>( static_cast<double>(container.height()) / (static_cast<double>(heightSrc) / static_cast<double>(widthSrc )) );
destWidth = destWidth < (container.width() - 2) ? destWidth + 2 : destWidth;
destHeight = destHeight < (container.height() - 2) ? destHeight + 2 : destHeight;
ui->destLabel->setMaximumSize(destWidth, destHeight); // set sub window
}