QT4 comboBox y Bloqueo del programa

Iniciado por mk_137, 2 Julio 2010, 20:09 PM

0 Miembros y 1 Visitante están viendo este tema.

mk_137

Hola a todos,

Tengo un par de problemas con un programa que estoy haciendo.
Primero, me gustaria saber como bloquear un QcomboBox una vez seleccionada una opcion.

Y el otro problema es que al entrar en la funcion que hos pego debajo, al estar en un bucle sin fin si intento picar dentro de la ventana me dice que no responde.
Hay alguna manera de poder hacer el bucle pero que no me lanze el mensaje este,

void MainWindow::show_text()
{
    unsigned char uchar[256];
    string buff;
    QString qs;
    int nCom;
    std::stringstream stm;

    nCom = ui->comBox->currentIndex()+1;
    stm << nCom;

    if (!this->comhandle)
    {
        if ((this->comhandle = DllOpenComm(nCom)) == 0)
        {
            buff = "COM"+stm.str()+" : Puerto incorrecto";
            qs = buff.c_str();
            ui->errorBrowser->setText(qs);
        }
        else
        {
            ui->comBox->setFrame(false);
        }
    }

    if (this->comhandle)
    {
        buff = "COM"+stm.str()+" : Passar la tarjeta...";
        qs = buff.c_str();
        ui->errorBrowser->setText(qs);
        buff.clear();
        while (DllISO16693_Inventory(this->comhandle, uchar, buff) != 0)
        {
            buff.clear();
            Sleep(500);
        }
        qs = buff.c_str();
        ui->textBrowser->append(qs);
    }
}

O-LLOS-O

Yo tube un problema similar, lo solucione con thread, el tema de que no respondia, pero sinceramente no me gusto nada la solucion, a mi tambien me gustaria que alguien puesiera otra si la hay.

Respecto a la primera pregunta no se muy bien a lo que te refieres, pq simplemente no lo desabilitas con un setEnable(False)?.

No se si te referias a eso....

Saludos

mk_137

Cita de: O-LLOS-O en  3 Julio 2010, 08:23 AM
Yo tube un problema similar, lo solucione con thread, el tema de que no respondia, pero sinceramente no me gusto nada la solucion, a mi tambien me gustaria que alguien puesiera otra si la hay.
He estado pensando que en vez de entrar en el bucle que repite esa accion, programar algun alarm o algo, que cada X tiempo se vuelva a programar si no se cumple una condicion.

Cita de: O-LLOS-O en  3 Julio 2010, 08:23 AM
Respecto a la primera pregunta no se muy bien a lo que te refieres, pq simplemente no lo desabilitas con un setEnable(False)?.
Y sobre esto, muchas gracias, es exactamente lo que necesitava !!!

El problema es que es la primera vez que trabajo con QT, y buscando los QcomboBox encontre esto:
http://doc.qt.nokia.com/4.6/qcombobox.html
Y no aparecia la funcion que has comentado, pero acabo de caer que es una classe heredada de Qwidget y precisamente esa si que tiene el enabled.

Muchas gracias, me has enseñado algo muy importante.

O-LLOS-O

Ves a a documentacion de QT alli esta toda la informacion sobre todo, yo he tocado desde hace unos tres meses PyQt que es Qt4 con python.

http://doc.trolltech.com/4.1/classes.html

Aqui tienes toda la documentacon de todas las clases, te recomiendo que utilizes ctrl+f para buscar xdxd
te dice todos los metodos de cada clase y para que sirven, espero qe te ayude,


En lo de que se queda bloqueado, yo lo he "solucionad" con los threads como te he dicho y con un timer... no se si sabes utilizar-lo, pero es facil, aunque sigue sin gustarmer debe de haber otra solucion....

mirate este link http://zetcode.com/tutorials/qt4tutorial/

saludos!!!