Qt4-建立窗口与对应代码分析
来源:互联网 发布:excel下拉菜单筛选数据 编辑:程序博客网 时间:2024/06/05 19:53
Qt4是用于开发GUI的工具,开始使用的时候自然是希望很快的建立一个窗口。
到现在为止,一共使用过3种方法建立自己的窗口:
1 利用Qt designer : 直接在终端模式或MingGW的窗口中输入designer,就可以启动Qt的窗口设计工具designer了。使用方法很多书上都有详细的说明。
2 直接在已有的工程中添加窗口 : 在打开的工程中增加一个新的窗口,其实就是在Qt Creator中调用了designer。
3 直接用代码实现窗口的构建 : 感觉比较有“艺术”性的一种方法。
其实3种方法的实质都是一样的,通过继承Qt GUI模块中的各种窗体控件,达到拼凑窗口的目的。只不过使用designer的话,计算机会自动生成大部分的构建代码,比较省事。而且“窗口布局管理器”感觉还是在界面状态下比较好操作。
不论用什么方法,随后都会得到一系列的代码。机器自动生成的代码比较有规律一些。以一个命名为"mainwindow”的窗口为例吧。当使用designer创建并生成代码后,我们可以在目录下得到两个重要的文件。"ui_mainwindow.h"和"mainwindow.ui"。
先说说"ui_mainwindow.h".
仔细观察后可以发现个文件的大概结构为:
#include.... //头文件-构建窗口使用到的各种窗体控件头文件
class MainWindow : QWidget { //类声明-声明构建的窗口类
setupUi函数//该函数包括了所有构建窗口所需要的代码,包括窗体控件的构建和设置。
};
namespace Ui{};//建立了class的命名空间
其中最重要的就是class和setupUi了,当需要创建mainwindow的时候就要依靠这两个部分。
然后是mainwindow.ui。这个文件是designer生成的窗口文件。听说可以直接利用Qt的类直接加载这个文件而达到创立窗口的目的。现在还没有研究到,先不记录了。
最后给个用Qt4-designer建立的窗口例子:
对应的'ui_designerND2868.h' (直接由Qt4-designer生成)
/********************************************************************************
** Form generated from reading ui file 'designerND2868.ui'
**
** Created: Wed Nov 25 09:53:41 2009
** by: Qt User Interface Compiler version 4.5.3
**
** WARNING! All changes made in this file will be lost when recompiling ui file!
********************************************************************************/
#ifndef DESIGNERND2868_H
#define DESIGNERND2868_H
#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QHBoxLayout>
#include <QtGui/QHeaderView>
#include <QtGui/QMainWindow>
#include <QtGui/QMenu>
#include <QtGui/QMenuBar>
#include <QtGui/QPushButton>
#include <QtGui/QStatusBar>
#include <QtGui/QTextEdit>
#include <QtGui/QVBoxLayout>
#include <QtGui/QWidget>
QT_BEGIN_NAMESPACE
class Ui_MainWindow
{
public:
QAction *actionOpen;
QAction *actionSave;
QAction *actionSave_as;
QAction *actionClose;
QWidget *centralwidget;
QWidget *horizontalLayoutWidget;
QHBoxLayout *horizontalLayout;
QTextEdit *textEdit;
QVBoxLayout *verticalLayout;
QPushButton *pushButton_2;
QPushButton *pushButton_3;
QPushButton *pushButton_5;
QPushButton *pushButton_4;
QPushButton *pushButton;
QMenuBar *menubar;
QMenu *menuFile;
QMenu *menuOption;
QStatusBar *statusbar;
void setupUi(QMainWindow *MainWindow)
{
if (MainWindow->objectName().isEmpty())
MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
MainWindow->resize(338, 227);
actionOpen = new QAction(MainWindow);
actionOpen->setObjectName(QString::fromUtf8("actionOpen"));
actionSave = new QAction(MainWindow);
actionSave->setObjectName(QString::fromUtf8("actionSave"));
actionSave_as = new QAction(MainWindow);
actionSave_as->setObjectName(QString::fromUtf8("actionSave_as"));
actionClose = new QAction(MainWindow);
actionClose->setObjectName(QString::fromUtf8("actionClose"));
centralwidget = new QWidget(MainWindow);
centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
horizontalLayoutWidget = new QWidget(centralwidget);
horizontalLayoutWidget->setObjectName(QString::fromUtf8("horizontalLayoutWidget"));
horizontalLayoutWidget->setGeometry(QRect(8, 3, 321, 181));
horizontalLayout = new QHBoxLayout(horizontalLayoutWidget);
horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
horizontalLayout->setContentsMargins(0, 0, 0, 0);
textEdit = new QTextEdit(horizontalLayoutWidget);
textEdit->setObjectName(QString::fromUtf8("textEdit"));
horizontalLayout->addWidget(textEdit);
verticalLayout = new QVBoxLayout();
verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
pushButton_2 = new QPushButton(horizontalLayoutWidget);
pushButton_2->setObjectName(QString::fromUtf8("pushButton_2"));
verticalLayout->addWidget(pushButton_2);
pushButton_3 = new QPushButton(horizontalLayoutWidget);
pushButton_3->setObjectName(QString::fromUtf8("pushButton_3"));
verticalLayout->addWidget(pushButton_3);
pushButton_5 = new QPushButton(horizontalLayoutWidget);
pushButton_5->setObjectName(QString::fromUtf8("pushButton_5"));
verticalLayout->addWidget(pushButton_5);
pushButton_4 = new QPushButton(horizontalLayoutWidget);
pushButton_4->setObjectName(QString::fromUtf8("pushButton_4"));
verticalLayout->addWidget(pushButton_4);
pushButton = new QPushButton(horizontalLayoutWidget);
pushButton->setObjectName(QString::fromUtf8("pushButton"));
verticalLayout->addWidget(pushButton);
horizontalLayout->addLayout(verticalLayout);
MainWindow->setCentralWidget(centralwidget);
horizontalLayoutWidget->raise();
textEdit->raise();
menubar = new QMenuBar(MainWindow);
menubar->setObjectName(QString::fromUtf8("menubar"));
menubar->setGeometry(QRect(0, 0, 338, 20));
menuFile = new QMenu(menubar);
menuFile->setObjectName(QString::fromUtf8("menuFile"));
menuOption = new QMenu(menubar);
menuOption->setObjectName(QString::fromUtf8("menuOption"));
MainWindow->setMenuBar(menubar);
statusbar = new QStatusBar(MainWindow);
statusbar->setObjectName(QString::fromUtf8("statusbar"));
MainWindow->setStatusBar(statusbar);
menubar->addAction(menuFile->menuAction());
menubar->addAction(menuOption->menuAction());
menuFile->addAction(actionOpen);
menuFile->addAction(actionSave);
menuFile->addAction(actionSave_as);
menuFile->addAction(actionClose);
retranslateUi(MainWindow);
QMetaObject::connectSlotsByName(MainWindow);
} // setupUi
void retranslateUi(QMainWindow *MainWindow)
{
MainWindow->setWindowTitle(QApplication::translate("MainWindow", "/344/270/273/347/252/227/345/217/243/344/276/213/345/255/220", 0, QApplication::UnicodeUTF8));
actionOpen->setText(QApplication::translate("MainWindow", "open", 0, QApplication::UnicodeUTF8));
actionSave->setText(QApplication::translate("MainWindow", "save", 0, QApplication::UnicodeUTF8));
actionSave_as->setText(QApplication::translate("MainWindow", "save as...", 0, QApplication::UnicodeUTF8));
actionClose->setText(QApplication::translate("MainWindow", "close", 0, QApplication::UnicodeUTF8));
pushButton_2->setText(QApplication::translate("MainWindow", "/347/274/226/350/276/221", 0, QApplication::UnicodeUTF8));
pushButton_3->setText(QApplication::translate("MainWindow", "/345/244/215/345/210/266", 0, QApplication::UnicodeUTF8));
pushButton_5->setText(QApplication::translate("MainWindow", "/347/262/230/350/264/264", 0, QApplication::UnicodeUTF8));
pushButton_4->setText(QApplication::translate("MainWindow", "/345/211/252/345/210/207", 0, QApplication::UnicodeUTF8));
pushButton->setText(QApplication::translate("MainWindow", "/345/210/240/351/231/244", 0, QApplication::UnicodeUTF8));
menuFile->setTitle(QApplication::translate("MainWindow", "File", 0, QApplication::UnicodeUTF8));
menuOption->setTitle(QApplication::translate("MainWindow", "Option", 0, QApplication::UnicodeUTF8));
} // retranslateUi
};
namespace Ui {
class MainWindow: public Ui_MainWindow {};
} // namespace Ui
QT_END_NAMESPACE
#endif // DESIGNERND2868_H
- Qt4-建立窗口与对应代码分析
- Qt4多窗口建立与切换
- linux窗口程序设计-Qt4精彩实例分析2
- 代码与标准如何对应
- x264参数与代码对应
- 代码与标准如何对应
- QT4 窗口切换
- [Qt4] 自定义窗口部件
- 创建窗口代码分析一
- 创建窗口代码分析二
- 靶向测序 流程建立 以及对应的分析策略
- 汇编代码对应的高级语言分析
- 汇编代码对应的高级语言分析
- OSG学习 GraphicsContext与窗口建立
- 分析QT3与QT4中uic的使用差异
- ns2代码分析(三)-CBR业务的创建与路由的建立
- socket 建立连接与三次握手的对应关系
- 建立窗口
- 找回root的密码
- 敏感词,敏感词,敏感词
- C#实现任意角度旋转图片(方法2)
- Linux 查看目录大小
- ASP.NET - 配置文件提供程序
- Qt4-建立窗口与对应代码分析
- 好文章,请耐心看完~
- Perl中使用shell命令
- 我的美国之旅-01
- DOS操作数据库简单命令
- 第一篇:ZF+smarty
- WM6设置及获取屏幕旋转方向
- 自动定时重启sql server回收内存
- 我的美国之旅-02