它应该做什么:当QComboBox
位于第一项(索引0)时,它应隐藏QStackedWidget
。这导致QComboBox
尽可能地扩展。只要您将QComboBox
中的项目更改为任何内容,QComboxBox
就会缩小,QStackedWidget
应该会显示正确的页面。
我拥有什么以及它做了什么:我测试当前索引项目QComboBox
的内容,并根据我改变小部件的大小策略和可见性以便获得我想要的东西。但它不起作用。我试图做一些变通办法,但我似乎无法解决这个问题。
我还使用qDebug()
查看currentIndexItem返回的内容,无论我将QComboBox
更改为什么索引,它似乎都会停留在0。我是否必须更新currentItemIndex?
注意:我在设计器中从QComboBox
到QStackedWidget连接了一个信号:currentIndexChanged(int) -> setCurrentIndex(int)
这是我的代码。
我的代码:
interfacewindow.h
#ifndef INTERFACEWINDOW_H
#define INTERFACEWINDOW_H
#include <QMainWindow>
#include <QPainter>
#include <QComboBox>
namespace Ui
{
class InterfaceWindow;
}
class InterfaceWindow : public QMainWindow
{
Q_OBJECT
public:
explicit InterfaceWindow(QWidget *parent = 0);
~InterfaceWindow();
private:
Ui::InterfaceWindow *ui;
private slots:
void on_actionClose_triggered();
};
#endif // INTERFACEWINDOW_H
interfacewindow.cpp
#include "interfacewindow.h"
#include "ui_interfacewindow.h"
#include <QDebug>
InterfaceWindow::InterfaceWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::InterfaceWindow)
{
ui->setupUi(this);
if(ui->comboBox->currentIndex() == 0)
{
ui->comboBox->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
ui->stackedWidget->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Fixed);
ui->stackedWidget->setVisible(false);
}
else
{
ui->comboBox->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Fixed);
ui->stackedWidget->setVisible(true);
}
}
InterfaceWindow::~InterfaceWindow()
{
delete ui;
}
void InterfaceWindow::on_actionClose_triggered()
{
this->close();
}
的main.cpp
#include <QApplication>
#include "interfacewindow.h"
int main(int argc, char **argv)
{
QApplication a(argc, argv);
InterfaceWindow w;
w.show();
return a.exec();
}