QComboBox currentIndex()隐藏其他小部件

时间:2015-03-12 01:54:57

标签: c++ qt qt-designer qcombobox

它应该做什么:当QComboBox位于第一项(索引0)时,它应隐藏QStackedWidget。这导致QComboBox尽可能地扩展。只要您将QComboBox中的项目更改为任何内容,QComboxBox就会缩小,QStackedWidget应该会显示正确的页面。

enter image description here

我拥有什么以及它做了什么:我测试当前索引项目QComboBox的内容,并根据我改变小部件的大小策略和可见性以便获得我想要的东西。但它不起作用。我试图做一些变通办法,但我似乎无法解决这个问题。

我还使用qDebug()查看currentIndexItem返回的内容,无论我将QComboBox更改为什么索引,它似乎都会停留在0。我是否必须更新currentItemIndex?

enter image description here

注意:我在设计器中从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();
}

0 个答案:

没有答案