Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Promoting widgets in Qt Creator

Qt creator has option to promote one widget to customly created class that derives from base widget - I want to use that to promote widget to class in current project. Qt creator asks me about class name and header filename, and those value go directly to *.ui file, and then to ui_myform.h - the problem is that this file might be (and usually is) generated outside source tree (in build tree) which can be at arbitrary location, so direct specification of path in promoting window will not help. How to let QtCreator/uic know where to look for right header? Is it even possible?

Perhaps there is some Qt variable specyfying location of source tree, that I could insert in header filename field?

I am using self-compiled QtCreator 2.0.1 + self-compiled Qt 4.7.1.

EDIT:

Why can't you just type in the complete path name of the header file?

What if I will move source tree, or even share it on the web - then everybody who wants to compile my project would have to edit this path either in Qt creator or in source files - both are unacceptable.

like image 358
j_kubik Avatar asked Feb 05 '11 15:02

j_kubik


People also ask

How do I create a custom widget in Qt?

Adding the Custom Widget to Qt Designer. Click Tools|Custom|Edit Custom Widgets to invoke the Edit Custom Widgets dialog. Click New Widget so that we are ready to add our new widget. Change the Class name from 'MyCustomWidget' to 'Vcr'.

How do I add widgets to the main window in Qt?

Using QMainWindow is straightforward. Generally, we subclass QMainWindow and set up menus, toolbars, and dock widgets inside the QMainWindow constructor. To add a menu bar to the main window, we simply create the menus, and add them to the main window's menu bar.


1 Answers

The header file that Designer asks you for in the promotion dialog is YOUR own header file that define the custom widget, not the generated ui_*.h file.

Say you want to promote a plain QWidget to MyCustomWidget, you must already have a MyCustomWidget.h that defines your MyCustomWidget class included in your .pro file like this:

HEADERS  += MyCustomWidget.h

And in the widget promotion dialog, just type in MyCustomWidget.h. The purpose of it is so the generated ui header file (wherever it is) can include YOUR class definition.

like image 157
Stephen Chu Avatar answered Sep 24 '22 20:09

Stephen Chu