How to link push button to another form



  • Hey people,
    I am pretty new at Qt creator, I wonder how I can use the designer view to create a simple form with one single push button that links the form to another form. However, there is no such visual feature whereas you can add form to the project, what about multiforms project. I would appreciate a short guidance on how to create two forms and link them to each other using push button.
    Thankx



  • Connect button's clicked signal to a slot in designer form class. In that slot you can create new form.



  • I too don't have much experience using Qt Designer. But AFAIK there is a Signal Slot Editor which you can make use of and launch another form.



  • Signal/slot connections can be setup Qt Designer (or designer mode of Qt Creator) only for widgets living in the same .ui file. If you want to connect signals of widgets in one .ui file to a slot in another .ui file or class you must call connect() manually in your source files.



  • The Signal/Slot Editor will not let you connect signals and slots across forms, only inside one form.

    The connection can not be made in Designer, AFAIK. You can make the connection easily in code though. QObject::connect takes two QObject* arguments you can use. You would usually make such a connection in some piece of initialization code, or a constructor. See QObject::connect() for more information.



  • That's great except for the fact that I have not got a clue about your help. Having mentioned that I am new at this I am looking for the easiest method to link a push button to a form using the design mood, drag and drop thing, u know simple form with an action button that's all. Please help.



  • Did you read the "Getting Started Programming with Qt ":http://doc.qt.nokia.com/4.7/gettingstartedqt.html guide? It's a very good start to get a feeling for these kind of things.

    There are translations in various languages availbe, also. Have a look at this "Wiki page":http://developer.qt.nokia.com/wiki/Category:Learning::GettingStartedwith all of them listed.



  • I strongly suggest reading basics on Qt, at least topics in Assistant. Qt Creator is tool for making things easier if you know what really happens. It shouldn't be a black box.

    Also Qt Framework encourage a good programming style (unlike RADs, point-and-click and the program is ready)



  • [quote author="husban" date="1291662926"]That's great except for the fact that I have not got a clue about your help. Having mentioned that I am new at this I am looking for the easiest method to link a push button to a form using the design mood, drag and drop thing, u know simple form with an action button that's all. Please help.[/quote]

    Sorry my tips were not helpful for you. Qt won't allow you to do what you want without writing some actual code. If you want to do this with nothing but drag and drop, perhaps Qt is not for you. Designer can be a handy tool to help you get some things done, but it won't write your applications for you. What you want is not possible in only Designer.



  • As for me, I prefer creating UI by hands. It's easier to make changes, if needed.



  • Thanks for the hint, so where to start then and where the code should be added. And it seems i can use this-> pointer to assign an action to the push button, I am very familiar with c++ but I am having a difficult time finding how and where to add the code, thanks again



  • The Getting Started Programming with Qt I mentioned earlier is a good starting point. Also the docs on "Designer":http://doc.qt.nokia.com/latest/designer-manual.html and in particular the chapter "Using a Designer UI File in Your Application".

    Try things with small sample applications and adapt to your actual project later on.





  • [quote author="husban" date="1291675289"]Thanks for the hint, so where to start then and where the code should be added. And it seems i can use this-> pointer to assign an action to the push button, I am very familiar with c++ but I am having a difficult time finding how and where to add the code, thanks again[/quote]

    Husban, unfortunately there is no quick answer that gives a solution to your problem. Qt is very easy to learn, really, but you have to learn a little bit first about signals and slots. It might seem a bummer a first, but are pretty simple, as slots are regular functions, but ones that can be executed when a signal is emitted. You probably have to write a slot that instantiates the second form and raises it, and connect() it to the clicked() signal from the push button.

    As Andre explained you, the Qt Designer is not enough for doing what you want. Is helpful for creating individual dialogs or layouts, but not that much for linking different dialogs.

    I would start with the documents mentioned. Good luck!



  • A reference most of the Qt books is available "here":http://qt.nokia.com/developer/books.



  • I'm reading all the replies and wondering... are these all nerds and geeks there? Coming from java and Android world, i find development for Nokia pretty painful. Even developing for iPhones objective c is much easier that getting information around here. Arguments "qt is not for you", "encourages good programming style". Are you reading what you are writing? It encourages me to spend my time for learning new stuff, when all i want is to deliver some kind of business value. No wonder Nokia lags soooo behind, and with attitudes around here, it wont get any closer.

    nice holidays for you all :)



  • [quote author="gerasalus" date="1293199489"]I'm reading all the replies and wondering... are these all nerds and geeks there? Coming from java and Android world, i find development for Nokia pretty painful. Even developing for iPhones objective c is much easier that getting information around here. Arguments "qt is not for you", "encourages good programming style". Are you reading what you are writing? It encourages me to spend my time for learning new stuff, when all i want is to deliver some kind of business value. No wonder Nokia lags soooo behind, and with attitudes around here, it wont get any closer. [/quote]

    You have joined a few hours ago and already made a verdict on people here... and based on half sentences by dragging them out of context. It is not so nice, but you are new therefore: welcome on the forum and we hope your opinion will be much better after you spent some more time here.



  • [quote author="husban" date="1291675289"]Thanks for the hint, so where to start then and where the code should be added. And it seems i can use this-> pointer to assign an action to the push button, I am very familiar with c++ but I am having a difficult time finding how and where to add the code, thanks again[/quote]

    You are familiar with C++, then Qt is fun and very easy for you.
    In C++ ,you have to develop class of your own choice during programming, while in Qt you can have class library , from where you should use them and make code.

    Check the Qt class library.



  • [quote author="gerasalus" date="1293199489"]I'm reading all the replies and wondering... are these all nerds and geeks there? Coming from java and Android world, i find development for Nokia pretty painful. Even developing for iPhones objective c is much easier that getting information around here. Arguments "qt is not for you", "encourages good programming style". Are you reading what you are writing? It encourages me to spend my time for learning new stuff, when all i want is to deliver some kind of business value. No wonder Nokia lags soooo behind, and with attitudes around here, it wont get any closer.
    [/quote]

    I can add a "citation needed" to almost all sentences in this paragraph, plus a huge "off-topic" label. Please, don't feed the obvious troll.

    Gerasalus, if you really want to discuss things, use a proper thread. Leave this open in case husban needs a follow up.



  • [quote author="disperso" date="1293207826"][quote author="gerasalus" date="1293199489"]I'm reading all the replies and wondering... are these all nerds and geeks there? Coming from java and Android world, i find development for Nokia pretty painful. Even developing for iPhones objective c is much easier that getting information around here. Arguments "qt is not for you", "encourages good programming style". Are you reading what you are writing? It encourages me to spend my time for learning new stuff, when all i want is to deliver some kind of business value. No wonder Nokia lags soooo behind, and with attitudes around here, it wont get any closer.
    [/quote]

    I can add a "citation needed" to almost all sentences in this paragraph, plus a huge "off-topic" label. Please, don't feed the obvious troll.

    Gerasalus, if you really want to discuss things, use a proper thread. Leave this open in case husban needs a follow up.[/quote]

    I had actually thought of replying to Gerasalus post, but then I strongly felt its a waste of time.



  • Don't feed the troll? Are you serious ? There were at least three people with "Certified developer" badges there were so ignorant and could not write few lines of code? As i'm trying to enter Nokia development world for almost two weeks in after-work evening, i'll try to help husban:

    1. Lets say you have created two Main windows. One is called HelloWorld (you have a file HelloWorld.ui) and the other is called IgnorantForumMembers (you have a file IgnorantForumMembers.ui)
    2. You add a button to HelloWorld and name it myButton
    3. Locate file HelloWorld.h under Headers folder, and add a line like this inside HelloWorld declaration:

    @private slots:

    void myButton_clicked();@
    
    1. Locate file HelloWorld.cpp under Sources directory, and add code like this:

    In HellowWorld constructor:

    @ connect(ui->myButton, SIGNAL(clicked()), this, SLOT(myButton_clicked()));@

    And in the file, define myButton_clicked action:

    @void HelloWorld::myButton_clicked()
    {
    IgnorantForumMembers * t = new IgnorantForumMembers();
    t->activateWindow();
    t->raise();
    t->repaint();
    t->show();
    }@

    and vuolia - it works. This code might have a couple of bugs, especially related to memory management, as i'm pretty new to c++ world, so maybe those smart people with nice badges can help out, and correct my mistakes.

    And usability of QT creator strikes once again... It does work on Simulator, but it does not launch on Nokia X6 providing a meaningful " undefined reference to `IgnorantForumMembers::IgnorantForumMembers(QWidget*)"



  • I am very new here - just created an account.
    Some quick observations.
    If you want to help someone please help.

    Pretend that you are helping a tourist who is lost.
    Giving directions is a lot more helpful than saying "Have you looked at a map?" ("have you read documentation?"

    FWIW my suggestion is this link:
    http://doc.qt.nokia.com/latest/designer-using-a-ui-file.html
    It describes several methods of mixing cpp code and designer "ui" files.
    I found it helpful, since it shows and explains how to use the header files "ui_xxxx.h" with the cpp files.
    Additionally when you add the #include "ui_xxxx.h" line, RIGHT CLICKING the line will bring you to the CREATED "ui_xxxx.h" so that you know exact syntax of the AUTOMAGICALLY created form.

    While the above does not explicitly answer "husban"
    "husban" did say "I am very familiar with c++ "
    therefore knowing how to access the "automagically" created code, should be a huge help

    my two cents worth



  • Please, no necroposting - this topic is more than 4 months old. Meta stuff like this should be discussed in "The Lounge":http://developer.qt.nokia.com/forums/viewforum/7/.

    If you think there is need for discussion of this stuff, feel free to open a new thread there.

    Closing this one for now.


Log in to reply
 

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