qt窗口布局及自定义类
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
finddialog.cpp (4)
QHBoxLayout *topLeftLayout = new QHBoxLayout; topLeftLayout->addWidget(label); topLeftLayout->addWidget(lineEdit); QVBoxLayout *leftLayout = new QVBoxLayout; leftLayout->addLayout(topLeftLayout); leftLayout->addWidget(caseCheckBox); leftLayout->addWidget(backwardCheckBox); 总布局 QVBoxLayout *rightLayout = new QVBoxLayout; 需要 rightLayout->addWidget(findButton); this rightLayout->addWidget(closeButton); rightLayout->addStretch(1); QHBoxLayout *mainLayout = new QHBoxLayout(this); mainLayout->setMargin(30); 注意何时调用 mainLayout->setSpacing(6); addWidget, , mainLayout->addLayout(leftLayout); 何时调用 mainLayout->addLayout(rightLayout); addLayout }
finddialog.h(3)
class FindDialog : public QDialog { Q_OBJECT public: FindDialog(QWidget *parent = 0, const char *name = 0); signals: void findNext(const QString &str, bool caseSensitive); void findPrev(const QString &str, bool caseSensitive); private slots: void findClicked(); void enableFindButton(const QString &text);
finddialog.cpp (2)
FindDialog::FindDialog(QWidget *parent, const char *name) : QDialog(parent, name) { setCaption(tr("Find")); label = new QLabel(tr("Find &what:"), this); lineEdit = new QLineEdit(this); label->setBuddy(lineEdit); caseCheckBox = new QCheckBox(tr("Match &case"), this); backwardCheckBox = new QCheckBox(tr("Search &backward"), this); findButton = new QPushButton(tr("&Find"), this); findButton->setDefault(true); findButton->setEnabled(false); closeButton = new QPushButton(tr("Close"), this);
finddialog.h (4)
private: QLabel *label; QLineEdit *lineEdit; QCheckBox *caseCheckBox; QCheckBox *backwardCheckBox; QPushButton *findButton; QPushButton *closeButton; }; #endif
finddialog.h (1)
finddialog.h(2)
#ifndef FINDDIALOG_H #define FINDDIALOG_H #include <qdialog.h> class QCheckBox; class QLabel; class QLineEdit; class QPushButton;
finddialog.cpp (3)
connect(lineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(enableFindButton(const QString &))); connect(findButton, SIGNAL(clicked()), this, SLOT(findClicked())); connect(closeButton, SIGNAL(clicked()), this, SLOT(close()));
finddialog.cpp (1)
#include <qcheckbox.h> #include <qlabel.h> #include <qlayout.h> #include <qlineedit.h> #include <qpushbutton.h> #include "finddialog.h"
窗口布局
QHBoxLayout QVBoxLayout
QGridLayout
窗口布局
finddialogwenku.baidu.comcpp (5)
void FindDialog::findClicked() { QString text = lineEdit->text(); bool caseSensitive = caseCheckBox->isOn(); if (backwardCheckBox->isOn()) emit findPrev(text, caseSensitive); else emit findNext(text, caseSensitive); } void FindDialog::enableFindButton(const QString &text) { findButton->setEnabled(!text.isEmpty()); }
主函数main.cpp 主函数
#include <qapplication.h> #include "finddialog.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); FindDialog *dialog = new FindDialog; app.setMainWidget(dialog); dialog->show(); return app.exec(); }
qt窗口布局及自定义类 窗口布局及自定义类
说明
以下将通过一个例子讲解自定义类的qt 以下将通过一个例子讲解自定义类的 程序设计的主要流程
要设计的界面
通过两个文件: 通过两个文件:finddialog.h 和 finddialog.cpp来实 来实 现,即定义一个类
#ifndef FINDDIALOG_H #define FINDDIALOG_H #include <qdialog.h> class QCheckBox; class QLabel; class QLineEdit; class QPushButton; class FindDialog : public QDialog { Q_OBJECT public: FindDialog(QWidget *parent = 0, const char *name = 0); signals: void findNext(const QString &str, bool caseSensitive); void findPrev(const QString &str, bool caseSensitive); private slots: void findClicked(); void enableFindButton(const QString &text); private: QLabel *label; QLineEdit *lineEdit; QCheckBox *caseCheckBox; QCheckBox *backwardCheckBox; QPushButton *findButton; QPushButton *closeButton; }; #endif
多窗口调用
以前面的例子为例讲解多程序调用的方法: 以前面的例子为例讲解多程序调用的方法:
1 将find按钮名称改为clock按钮,将../../ qt-embedded-free3.1.1/examples/aclock中的aclock.cpp和aclock.h拷贝到当前目录 2 在finddialog.h里加上 #include"aclock.h" class AnalogClock; 3 将finddialog.cpp文件的findClicked函数,改为: void FindDialog::findClicked(){ AnalogClock *clock=new AnalogClock; clock->show(); } 这样,用户点击clock按钮的时候就可以调出clock界面了。