My program doesn't show up in my enterprise device while in pc does



  • Hello!!

    I've made a couple of projects in Qt4.8.5 which have to run on a especific device (the product of our company) which runs under a unix OS and they run as expected. You launch them, they show up and you use them. Until here is everything normal and happy:D

    Now I've made another program, which is like one of the before mentioned but bigger. The thing is that now that I've finished it, I've tried to run it on the HW and something strange happened:

    The screen gets black (the tipical black "with light" that means that the screen is on). I've launched it manually so I can see the console messages on console and I see all the qDebug() it has to print at the beginning and also, I have a qDebug() << "1st page";on the ::initializePage() funcion of the first page shown (is a QWizardPage) also which is printed, so everything looks normal but... I can't see it on the screnn... just a black screen (My apps' background is orange so it is now the background of the app).

    Any idea of why I can't see it? The HW has all the libraries necessaries for it because as I said, I run there 2 other Qt apps.

    I add my .pro info...don't think it is usefull now but... any information is apreciated I guess..

    QT       += core gui
    QT       += network
    QT       += script
    QT       += date
    QT       += time
    QT       += xml
    QMAKE_CXXFLAGS += -std=c++11
    QMAKE_CXXFLAGS  += -s
    
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    
    TARGET = MyApp
    TEMPLATE = app
    

    Note 1: In the 1st page I have 2 buttons, so if you press enter, you go to the next QWizardPage called 2nd page so... when I see the "1st page" message on console, if I press enter on the device, of course, it then shows the "2nd page" message from the qDebug in the ::initializePage() which means that the program runs well, it is not frozen.

    Note 2: Another thing I want to point is that: it CAN'T be in the background running, the device make it appear in front always.

    Thank you so much.



  • So... after 2 days looking and trying different things with the different versions I had in the SVN I've found the stupid-silly-cause of my problem...

    It was a page, more exactly in its constructor where I create a connect between a combobox curretnIndexChanged signal and a fucntion I created as a slot. After that connect I load some items into the cb and switching those lines fixed my problem.... I don't really understand why because the combobox was well created and I thought is was not necessary to load some items into it to be able to do a connect with it but... seems I was wrong


  • Qt Champions 2016

    @roseicollis
    Hello,
    I'm glad you were able to solve your problem, however you're also correct in noting that it shouldn't in principle matter where you make your QObject::connect calls. Maybe if you provide a code-snippet we could investigate that?

    Kind regards.



  • Hi @kshegunov srry for my late reply.

    What I do in that QWizardPage called WP25 is:
    In its constructor:

     .... 
     LoadXMLInfo();
     connect(my_combobox, SIGNAL(currentIndexChanged(int)), this, SLOT(SetSomeLabels(int)));
    ---
    

    In the loadXMLInfo function, the only thing that has something in common with the combobox is:

     while(!Child.isNull())
        {
            my_combobox->addItem(Child.attribute("Info1",Child.toText().data()), Child.attribute("Info2",Child.toText().data()));
            Child = Child.nextSibling().toElement();
        }
    

    And in the SetSomeLabels function:

    void WP25::SetSomeLabels(int i)
    {
        if (i==(my_combobox->count()-1))
        {
            m_bOtherTipus=true;
            l_Onelabel->setVisible(true);
            le_OneLineEdit>setVisible(true);
        }else{
            m_bOtherTipus=false;
            l_OneLabel->setVisible(false);
            le_OneLineEdit->setVisible(false);
        }
    }
    

    I think that is everything important here


  • Qt Champions 2016

    @roseicollis
    Hello,
    I can't spot anything plainly wrong with that part of the code. Do you get any Qt warnings when running your application on the problematic device?

    Kind regards.


  • Lifetime Qt Champion

    Hi,

    Does LoadXMLInfo work on a local file ?



  • Hi @SGaist ! Yes, but the XML is ok and well loaded I imagine because the program reads it and load it into the combobox


  • Lifetime Qt Champion

    What I meant is that if you are using a local file from your hard drive then it's normal that it won't load when running on a different device. If you don't change that file often, then use Qt's resource system to embedded the file in your application.



  • @SGaist oh sorry, I know what you mean, that's why I say it loads correctly in both sites... The XML is in both and yes, it will be changed every now and then so it has to be this way but... as I said, it is well loaded.... so I discard that as a problem :S


  • Lifetime Qt Champion

    Ok, I misunderstood your original problem.

    In such a strange case (meaning when nothing is obvious), one thing to do is to "disable everything". By that I mean start with only your main function showing a QWidget in place of your custom widget. I know it sounds basic but it confirms that Qt's working. The next step is to re-enable one by one your custom widgets until things break again.



  • Np :) Well its something similar to what I did... I commented everything until it stopped working so found the problem in that constructor.... comented everything ans was descomenting until found that and that's all.. If I switch lines, it crashes O.o


  • Lifetime Qt Champion

    What did you have to switch ?


  • Qt Champions 2016

    @SGaist
    Hello, look up posts #2 and #4. He had switched:

     connect(my_combobox, SIGNAL(currentIndexChanged(int)), this, SLOT(SetSomeLabels(int)));
     LoadXMLInfo();
    

    to make it work, although I see no logical reason not to work in the original order.


  • Lifetime Qt Champion

    I also don't see any reason either.

    However, one thing I usually do is to setup widgets and connection and then trigger data/settings loading once everything is done or even right after the event loop as started using e.g. a QTimer with a 0 timeout.


  • Qt Champions 2016

    @SGaist
    To be honest I've never found any use for single shot timers with 0 timeout. Although, this depends on a personal preference I have always used QMetaObject::invokeMethod with Qt::QueuedConnection for such purposes. :)


  • Lifetime Qt Champion

    QTimer is higher level and a bit clearer for people not going in the lower levels of Qt. But in the end, yes both have the same effects.

    Also, invokeMethod doesn't have any overload for lambdas


  • Qt Champions 2016

    @SGaist

    Also, invokeMethod doesn't have any overload for lambdas

    True, however you can pass arguments with it. And lambdas I can't remember needing really. ;)


  • Lifetime Qt Champion

    Yup, good point.

    For lambdas ? Two main things comes to mind for Qt: real private slots and processing of QNetworkReply :)


  • Qt Champions 2016

    @SGaist

    For lambdas ? Two main things comes to mind for Qt: real private slots and processing of QNetworkReply :)

    Q_PRIVATE_SLOT works wonders for me, although I could appreciate one wanting to use lambdas for it. QNetworkReply I've never used, only raw TCP/UDP connections ... I guess, I'm pretty old school ... :)


  • Lifetime Qt Champion

    @kshegunov said:

    Q_PRIVATE_SLOT

    AFAIK, works only if you also use the PIMPL idiom, which is not the most common case.

    QNetworkAccessManager is a good tool when you want to write a layer to access a REST service. You use what best fits your needs :)



  • wow! I've learned a lot with this little conversation, thank you so much! (Even if i don't understand everything but I'll take a look on it calmly later :D)

    @kshegunov I'm not "he" , I'm "she" ;) but don't worry haha

    I think I'll close this topic as I see that what happened is not normal but is difficult to know why happened so, don't worry about that :) (and of course because I have to move on and finish what I'm doing )

    Thank you @SGaist and @kshegunov ^^


  • Qt Champions 2016

    @roseicollis

    I'm not "he" , I'm "she" ;) but don't worry haha

    I'm sorry, unfortunately there's almost no way to deduce that in English, so please allow amicably for such misunderstandings ... :)

    Kind regards.



  • @kshegunov I know I know ^^and normally I don't pay much attention to this but.. this time wanted to point it out... dunno why hahahaso as I said np and code happily!! :D


Log in to reply
 

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