【QT】C++ GUI Qt4 学习笔记1

Find对话框实现 平台 Qt5.3.2 MinGW4.8.2

注意创建时用QDialog

finddialog.h

#ifndef FINDDIALOG_H

#define FINDDIALOG_H



#include <QDialog>

#include <QLabel>

#include <QCheckBox>

#include <QLineEdit>

#include <QPushButton>

#include <QLayout>



class FindDialog : public QDialog

{

    Q_OBJECT

public:

    FindDialog(QWidget * parent = 0);

signals:

    void findNext(const QString &str, Qt::CaseSensitivity cs);

    void findPrevious(const QString &str, Qt::CaseSensitivity cs);

private slots:

    void findClicked();

    void enableFindButton(const QString &text);

private:

    QLabel * label;

    QLineEdit * lineEdit;

    QCheckBox * caseCheckBox;

    QCheckBox * backwardCheckBox;

    QPushButton * findButton;

    QPushButton * closeButton;

};



#endif // FINDDIALOG_H

finddialog.cpp

#include <QtGui>

#include "finddialog.h"



FindDialog::FindDialog(QWidget *parent):QDialog(parent)

{

    label = new QLabel(tr("Find &what:"));

    lineEdit = new QLineEdit;

    label->setBuddy(lineEdit);



    caseCheckBox = new QCheckBox(tr("Match &case"));

    backwardCheckBox = new QCheckBox(tr("Search &backward"));



    findButton = new QPushButton(tr("&Find"));

    findButton->setDefault(true);

    findButton->setEnabled(false);



    closeButton = new QPushButton(tr("Close"));



    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()));



    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);

    rightLayout->addWidget(closeButton);

    rightLayout->addStretch();



    QHBoxLayout * mainLayout = new QHBoxLayout;

    mainLayout->addLayout(leftLayout);

    mainLayout->addLayout(rightLayout);

    setLayout(mainLayout);

    setWindowTitle(tr("Find"));

    setFixedHeight(sizeHint().height());

}



void FindDialog::findClicked()

{

    QString text = lineEdit->text();

    Qt::CaseSensitivity cs = caseCheckBox->isChecked()?Qt::CaseSensitive

                                                     :Qt::CaseInsensitive;

    if(backwardCheckBox->isChecked())

    {

        emit findPrevious(text, cs);

    }

    else

    {

        emit findNext(text, cs);

    }

}



void FindDialog::enableFindButton(const QString &text)

{

    findButton->setEnabled(!text.isEmpty());

}

mian.cpp

#include "finddialog.h"

#include <QApplication>



int main(int argc, char *argv[])

{

    QApplication a(argc, argv);

    FindDialog *dialog = new FindDialog;

    dialog->show();



    return a.exec();

}

【QT】C++ GUI Qt4 学习笔记1

 

你可能感兴趣的:(学习笔记)