工程名为:projectchooser
发现projectdialog.h在没有包含projectlistwidget.h的情况下就使用了projectlistwidget.h中定义的类名ProjectListWidget,使其作为类ProjectDialog的成员函数moveCurrentItem的参数类型。原来与ui_projectdialog.h有关系,可是ui_projectdialog.h是生成的文件,它是怎么把projectdialog包含进去的呢?哪位能帮忙把原理讲一下,谢谢了。
- C/C++ code
//projectdialog.h #ifndef PROJECTDIALOG_H #define PROJECTDIALOG_H #include <QDialog> #include "ui_projectdialog.h" class ProjectDialog : public QDialog, private Ui::ProjectDialog { Q_OBJECT public: ProjectDialog(QWidget *parent = 0); public slots: void on_leftButton_clicked(); void on_rightButton_clicked(); private: void moveCurrentItem(ProjectListWidget *source, ProjectListWidget *target); }; #endif
------解决方案--------------------
QtDesigner里设计的ui,可以将某个控件提升为(Promote to...)一个自定义类型的控件,应该可以解答你这个问题。