首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在QT中将QComboBox值转换为int

如何在QT中将QComboBox值转换为int
EN

Stack Overflow用户
提问于 2016-01-23 14:23:40
回答 2查看 2.5K关注 0票数 1

我正在使用Qt与calculator一起制作一个简单的计算器,我希望从QCombobox (包含操作:'+‘,’‘,'*','/')中转换一个值,所以我使用了以下方法:

// operation is the name of my QComboBox :)

代码语言:javascript
复制
QVariant i = ui -> operation -> itemData(ui -> operation -> currentIndex()); 
int val = i.toInt();

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

代码语言:javascript
复制
printf("valeur %d \n",i);

输出

1219552标准 1219552标准 1219552标准 1219552标准 1219552标准

转换给我的值与我选择任何操作时与QComboBox索引不对应的值相同。然而,它成功地使加法操作成功!

这是一个用来演示我试图完成的任务的洞文件:

代码语言:javascript
复制
#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的值

有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-23 14:36:19

你的意思是:

代码语言:javascript
复制
int val = ui->operation->currentIndex();

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

只有在使用itemData将数据附加到项目的情况下,setItemData才是相关的。

票数 3
EN

Stack Overflow用户

发布于 2016-01-23 14:41:14

您似乎混淆了QComboBox可以包含的两个值:文本(您在QVariant对话框屏幕快照中编辑的内容)和存储在QVariant QCombobox::setItemData(int, QVariant, int) http://doc.qt.io/qt-4.8/qcombobox.html#setItemData中的实际有用有效负载。如果希望在每个combobox条目旁边保存和检索int,请使用后一个函数并使用相应的QComboBox::itemData(int, int)进行检索。

严格地说,在用来存储数据的QComboBox中有一个完整的QComboBox.引用文档:

QComboBox对其弹出列表使用模型/视图框架并存储其项。默认情况下,QStandardItemModel存储项,QListView子类显示popuplist。您可以直接访问模型和视图(使用model()和view()),但是QComboBox还提供了设置和获取项数据的函数(例如,setItemData()和itemText())。您还可以设置一个新的模型和视图(使用setModel()和setView())。对于combobox标签中的文本和图标,使用具有Qt::DisplayRole和Qt::DecorationRole的模型中的数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34964631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档