我正在製作一個簡單的計算器,使用Qt與QT Creator 我想從QCombobox轉換一個值(即維持操作:'+',' - ','*' , '/')爲int,所以我用這個:如何將QComboBox的值轉換爲QT中的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);
輸出
valeur 1219552
valeur 1219552
valeur 1219552
valeur 1219552
valeur 1219552
轉換是給我的,它不是對應相同的值到QComboBox w的索引henver我選擇了任何操作。但是,它使添加操作成功!
這是孔文件來演示什麼,我試圖完成:
#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我已經使用圖形界面來做到這一點,我將包括到我的文章:) –