【发布时间】:2016-01-23 14:23:40
【问题描述】:
我正在使用 Qt 和 QT Creator 制作一个简单的计算器 我想将一个值从 QCombobox(包含操作:'+'、'-'、'*'、'/')转换为 int,所以我使用了这个:
// operation is the name of my QComboBox :)
QVariant i = ui -> operation -> itemData(ui -> operation -> currentIndex());
int val = i.toInt();
当尝试打印 i 的值来测试它时,我得到:
printf("valeur %d \n",i);
输出
价值 1219552
价值 1219552
价值 1219552
价值 1219552
价值 1219552
当我选择任何操作时,转换给我的值与 QComboBox 的索引不对应。但是它使添加操作成功!!!
这是演示我要完成的工作的漏洞文件:
#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));
}
}
有什么建议吗?
【问题讨论】:
-
你知道在使用它之前你必须设置itemData,不是吗?那你是怎么设置的?
-
@MehrdadMomeny 我已经使用图形界面来完成它,我将包含在我的帖子中:)
标签: c++ qt user-interface qcombobox qvariant