Qt 在运行时添加带有图像的QLabel时忽略图像缩放
我试图在运行时将带有图像的QLabel添加到我的GUI中,但是缩放被忽略,图像扩展到比屏幕大的完整大小,忽略大小限制,并且无法正确缩放内容 如我的GridLayout所述,图像应位于窗口的底部左侧:Qt 在运行时添加带有图像的QLabel时忽略图像缩放,qt,widget,qwidget,qlabel,Qt,Widget,Qwidget,Qlabel,我试图在运行时将带有图像的QLabel添加到我的GUI中,但是缩放被忽略,图像扩展到比屏幕大的完整大小,忽略大小限制,并且无法正确缩放内容 如我的GridLayout所述,图像应位于窗口的底部左侧: headerPnl= new HeaderPnl(); buttonPnl = new ButttonPnl; mainContentPnl = new QStackedWidget; mainLayout = new QGridLayout; mainLayout->setMargin(0
headerPnl= new HeaderPnl();
buttonPnl = new ButttonPnl;
mainContentPnl = new QStackedWidget;
mainLayout = new QGridLayout;
mainLayout->setMargin(0);
mainLayout->setSpacing(0);
mainLayout->addWidget(headerPnl, 0, 0, 1, 7);
mainLayout->addWidget(mainContentPnl, 1, 0, 10, 6);
mainLayout->addWidget(buttonPnl, 1, 6, 10, 1);
mainLayout->setRowStretch(0,1);
mainLayout->setRowStretch(1,2);
mainLayout->setRowStretch(2,2);
mainLayout->setRowStretch(3,2);
mainLayout->setRowStretch(4,2);
mainLayout->setRowStretch(5,2);
mainLayout->setRowStretch(6,2);
mainLayout->setColumnStretch(0,1);
mainLayout->setColumnStretch(1,1);
mainLayout->setColumnStretch(2,1);
mainLayout->setColumnStretch(3,1);
mainLayout->setColumnStretch(4,1);
mainLayout->setColumnStretch(5,1);
mainLayout->setColumnStretch(6,1);
this->setLayout(mainLayout);
标题穿过顶部,按钮面板沿着右侧,屏幕的其余部分根据应用程序的工作流程(即按下的按钮等)而变化
必要时,“我的GUI”将替换小部件并更新GUI,如下所示:
void MainWindow::setContentPane(QWidget *content){
mainLayout->replaceWidget(contentPnl, content);
contentPnl = content;
}
void MainWindow::setButtonPanel(QWidget *buttonPanel){
mainLayout->replaceWidget(buttonPnl, buttonPanel);
buttonPnl = buttonPanel;
}
void MainWindow::configureWelcome(){
QLabel *welcomeLbl = new QLabel;
welcomeLbl->setObjectName("welcomeLbl");
welcomeLbl->setPixmap(QPixmap(":/images/welcome.jpg"));
welcomeLbl->setScaledContents(true);
CustomWidget *welcomeWidget = new CustomWidget;
QHBoxLayout *welcomeLayout = new QHBoxLayout;
welcomeLayout->addWidget(welcomeLbl);
welcomeWidget->setLayout(welcomeLayout);
setContentPane(welcomeWidget);
CustomWidget *buttonPnl = createWelcomeButtonPanel();
setButtonPanel(buttonPnl);
}
如何使此图像适合GridLayout?似乎在向已设置的布局添加小部件时,GUI不知道如何处理GridLayout中的大小约束。替换按钮可以正常工作,但添加图像则不行
附带问题:我一直试图远离QStackedWidget,因为这个应用程序是为低功耗系统设计的,在应用程序启动时创建所有可能的屏幕并将它们全部添加到QStackedWidget对我来说没有意义。相反,我宁愿在必要时使用这些资源,并且只在需要的时候创建所有GUI元素,即单击右按钮时。这有意义吗?您对包含QGridLayout的小部件有QSizePolicy吗?我建议使用水平和垂直QSizePolicy::Fixed 在第一个代码段中添加:
this->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
因此,当我这样做时,它确实保持了headerPnl的相同大小,不会延伸到屏幕外,但mainContentPnl(在本例中,它只是一个带有图像的QLabel)仍然在屏幕外展开,并且按钮也被推离屏幕,不可见