c++ - QT中如何将QComboBox值转换为int

标签 c++ qt user-interface qcombobox qvariant

我正在使用 Qt 和 QT Creator 制作一个简单的计算器 我想将一个值从 QCombobox(包含操作:'+'、'-'、'*'、'/')转换为 int,所以我使用了这个:

//操作是我的QComboBox的名字:)

QVariant i = ui -> operation -> itemData(ui -> operation -> currentIndex()); 
int val = i.toInt();

当尝试打印 i 的值来测试它时,我得到:

printf("valeur %d \n",i);

输出

valeur 1219552

valeur 1219552

valeur 1219552

valeur 1219552

valeur 1219552

当我选择任何操作时,转换为我提供了与 QComboBox 的索引不对应的相同值。但是它使加法操作成功!!!
Calculator
这是演示我正在尝试完成的内容的孔文件:

#include "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this); // lance la construction de la fenêtre.
    connect(ui->boutonEgale, SIGNAL(clicked()), this,SLOT(calculerOperation()));

}

Dialog::~Dialog()
{
    delete ui;
}


void Dialog::calculerOperation()
{
    QVariant i =   ui->operation->itemData(ui->operation->currentIndex());  
    int val = i.toInt();

    int rst = 0;
    switch(val)
    {
    case 0:  // +
    rst = ui->nb1->value() + ui->nb2->value();
    ui->result->setText(QString::number(rst));  
    break;
    case 1:  // -
    rst = ui->nb1->value() - ui->nb2->value();
    ui->result->setText(QString::number(rst));  
    break;
    case 2: // *
    rst = ui->nb1->value() * ui->nb2->value();
    ui->result->setText(QString::number(rst));   
    break;
    case 3: // /
    rst = ui->nb1->value() / ui->nb2->value();
    ui->result->setText(QString::number(rst));   
    break;
    default:
    rst = ui->nb1->value() + ui->nb2->value();
    ui->result->setText(QString::number(rst));
    }
}

我已经使用图形界面为 comboBox 设置了值 comboBox  Values

有什么建议吗?

最佳答案

你打算写:

int val = ui->operation->currentIndex();

这给出了选定的组合框索引(0 是第一个,“+”,1 是第二个,“-”等等)。

itemData 仅在您使用 setItemData 将数据附加到项目时才相关。

关于c++ - QT中如何将QComboBox值转换为int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34964631/

相关文章:

c++ - 如何在 QMenu 中为 QActions 指定助记符(&符号快捷方式)?

Java GUI编程攻略?

c++ - 保留指向前一个循环值的指针?

c++ - auto myFunc() -> int 和 int myFunc() 的区别或好处

QTextEdit 或 QTextBrowser 性能问题

python - 检测关键序列

c++ - 灵活数组(或建议另一种数据结构)

c++ - 快速提问 : explain this typedef

c++ - 从 QMenu 中删除图标空间

javascript - 如何仅在首次访问时显示 UI 导览/指南