2、将UI文件保存为.ui文件,以便之后可以使用Qt提供的UI文件编译器工具进行编译。
3、在项目中包含UI文件对应的头文件。
4、在代码中使用该头文件中的类来实例化UI控件。
首先,我们要编写一个主动态库,来实现我们自己的控件。其次,还要写一个接口动态库,用来实现designer中调用我们自己的控件。这一步很关键。这个动态库中程序结构都是qt固定的。具体参见附录。
最后,编译写好的上面两个插件,要拷贝一些文件到相应目录下:
分别将主动态库和库文件拷贝到qt安装的bin和lib目录下;
将接口动态库和库文件拷贝到qt安装目录的plugins\designer目录下;
将主动态库的接口头文件拷贝到qt安装目录的include目录下;
这样,我们的写的控件就添加完成了。这时打开desinger就可以在工具条中看到我们写的控件了。我们就可以像其它控件一样使用这个控件了。
如果是QtCreator生成会有Ui::MainWindow *ui定义。直接使用ui指针 *** 作控件就好。
一般UI会生成ui_*.h 文件如下:
可以 看到控件都是public的,可以直接使用
/********************************************************************************
** Form generated from reading UI file 'mainwindow.ui'
**
** Created by: Qt User Interface Compiler version 5.9.7
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_MAINWINDOW_H
#define UI_MAINWINDOW_H
#include <QtCore/QVariant>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QButtonGroup>
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMenuBar>
#include <QtWidgets/QStatusBar>
#include <QtWidgets/QToolBar>
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
class Ui_MainWindow
{
public:
QMenuBar *menuBar
QToolBar *mainToolBar
QWidget *centralWidget
QStatusBar *statusBar
void setupUi(QMainWindow *MainWindow)
{
if (MainWindow->objectName().isEmpty())
MainWindow->setObjectName(QStringLiteral("MainWindow"))
MainWindow->resize(400, 300)
menuBar = new QMenuBar(MainWindow)
menuBar->setObjectName(QStringLiteral("menuBar"))
MainWindow->setMenuBar(menuBar)
mainToolBar = new QToolBar(MainWindow)
mainToolBar->setObjectName(QStringLiteral("mainToolBar"))
MainWindow->addToolBar(mainToolBar)
centralWidget = new QWidget(MainWindow)
centralWidget->setObjectName(QStringLiteral("centralWidget"))
MainWindow->setCentralWidget(centralWidget)
statusBar = new QStatusBar(MainWindow)
statusBar->setObjectName(QStringLiteral("statusBar"))
MainWindow->setStatusBar(statusBar)
retranslateUi(MainWindow)
QMetaObject::connectSlotsByName(MainWindow)
} // setupUi
void retranslateUi(QMainWindow *MainWindow)
{
MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", Q_NULLPTR))
} // retranslateUi
}
namespace Ui {
class MainWindow: public Ui_MainWindow {}
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_MAINWINDOW_H
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)