[SOLVED =)]ComboBox Qstring but need an int or GLenumb



  • Hey everyone once again I got a question to ask,

    I got a combobox with 10 values:
    "Picture of the combobox values here":http://i.imgur.com/lYo9A.jpg

    As you can see it's a list of OpenGL primitives that are GLenumb.

    I got this function:
    @void MainWindow::on_cmbx_primatives_currentIndexChanged(const QString &arg1)
    {
    GLFrame->RenderThread.setPrimitiveType(arg1);
    primL = arg1;
    }@

    This sets the PrimitiveType value in the rendering class but clearly it's just a string and not an integer. Is it possible to set an additional value to a comboxbox argument for example the Text would be as an additional value that I could pass???
    "Since you can set comments and other additional values":http://i.imgur.com/jYYrB.jpg

    @GL_POINTS : but contain 0x0000@

    thank you



  • You can populate your combobox with "this":http://qt-project.org/doc/qt-4.8/qcombobox.html#addItem function:
    @void void QComboBox::addItem ( const QString & text, const QVariant & userData = QVariant() )@

    userData can be all you want...



  • Thank you, it seems i am doing something wrong
    @ui->cmbx_primatives->addItem(const QString("Test"), const QVariant & userdata = QVariant(const int(0x0000)));@



  • Try this:
    @ui->cmbx_primatives->addItem("Test", QVariant::fromValue<int>(0x0000));@



  • yep AcerExtensa that worked like a charm =]
    but how do I access the integer value from arg1 so I could pass it to the render class?



  • use
    @void currentIndexChanged ( int index )@
    signal instead one with QString.

    your slot will be when like this:
    @void MainWindow::on_cmbx_primatives_currentIndexChanged(int index)
    {
    primL = ui->cmbx_primatives->itemData(index).toInt();
    GLFrame->RenderThread.setPrimitiveType(primL);
    }@



  • AcerExtensa your magic worker, is it possible to access the name of the index instead of the number.
    I tried @QString arg1 = ui->cmbx_primatives->itemText(index).toStdWString();@ but that's wrong



  • @QString arg1 = ui->cmbx_primatives->itemText(index);@

    should be enough... or:

    @QString arg1 = ui->cmbx_primatives->currentText();@
    it will return text of currently selected item



  • Yep that worked right away.

    Well I removed all the values from the comboxbox in the Qt creator interface and the program crashed.
    "The program has unexpectedly finished."

    So then I just randomly added an item to the combo box and it worked again. Why's that?



  • Maybe you're trying to access items or userData before there is any items in combobox? Sounds pretty like that....



  • Once again AcerExtensa thank very much =] all my problems are now solved!!!



  • You are welcome! Please add "[SOLVED]" to the topic subject.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.