Qt World Summit: Submit your Presentation

Using Customized Dialog Boxes

  • Hi there, I'm a bit of a noob when it comes to Qt programming, so if I say something extremely revealing of my noviceness, please forgive me.

    So I have an application, and so far for all the dialogs I've just been using code directly to make dialogs.

    @void Dialog::informationMessage()
    QMessageBox::StandardButton reply;
    reply = QMessageBox::information(this, tr("QMessageBox::information()"), MESSAGE);
    if (reply == QMessageBox::Ok)

    However, now I want to use a custom created dialog box when a button is pressed. I'm just not sure how to do it. My main function works something like this:
    int main(int argc, char *arg[])
    QApplication a(argc, argv);
    Launcher *w = Launcher::getSingleton();
    int ret = a.exec();
    return ret;

    My Launcher.h source file's work something like this:
    class Launcher : public QMainWindow

    Launcher(QWidget *parent = 0, Qt::WFlags flags = Qt::FramelessWindowHint);

    static Launcher *getSingleton();
    //public functions

    Ui::LauncherClass ui;

    //rest of functions


    Anyway from my Launcher.cpp file I want to have a function that when called, will create a new Ui::CustomDialogClass ui; and allow me to use a customized dialog box I've created, but I'm not sure exactly how I should go about doing it as this "public QMainWindow" is used by my Launcher.h and its not really a "QMainWindow" its more of a "QSubWindow". Anyway if someone could point me in the right direction that'd be super awesome. Thanks!

  • Lifetime Qt Champion

    Hi and welcome to devnet,

    I would recommend you to go through the examples in the Qt documentation, you'll have a good base to do what you want to achieve.

  • Thanks for the reply. However, I've been looking through some of the examples. eg: http://qt-project.org/doc/qt-4.8/designer-using-a-ui-file.html

    Problem is all of them seem to use widget's. I just want a dialog box, not a widget. Am I confusing what Widget's actually are?

    Some sample code looked promising:
    QWidget *widget = new QWidget;
    Ui::CalculatorForm ui;

     return app.exec();

    But...I'm not so sure about the QWidget stuff. I thought I just wanted a dialog box, but it doesn't seem to allow me to do that except as a main dialogue. And apparently I can't have more than 1 of those. :(

  • Lifetime Qt Champion

    QDialog is a specialized QWidget, if you need a QDialog, simply use it in place of QWidget. You can also go through the examples given in QDialog's documentation, they'll show you various ways of using it.

  • So I couldn't figure out how to get QDialog's to work so I just switched to using widgets and then did this:

    @ SettingDialogues *object = new SettingDialogues(this);
    object->setWindowFlags(Qt::Dialog); //make the object be a dialog

    Seems to be the trick, I had to change my ui to a widget in order to get it to work. Hopefully I can figure the process out for Dialog's.

  • If you find it's hard to understand, maybe a C++ book is useful for you at present.

  • Well its not really hard to understand c++ itself, I need a Qt specific book :D. I understand c++ well enough, I'm just not use to how Qt works. I'm sure I'll get better at using it, the more I use Qt based stuff.

    Regardless, I was able to get it working with QDialog's later today, it was a simple mistake really. I had just initially declared it as a QWidget in my .h file, instead of a QDialog which was causing the problem.

    Thanks for y'alls help though.

Log in to reply