Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

...

Dialogin

...

teko

...

ohjelmallisesti,

...

layout

...

....

...

Qt:n

...

yksi

...

tärkeimmistä

...

tiedostoista

...

on

...

projektitiedosto,

...

tästä

...

qmake

...

ohjelma

...

osaa

...

tehdä

...

automaattisesti

...

make

...

-tiedoston.

...

Ensimäisessä

...

esimerkissämme

...

projektitiedostossa

...

terve.pro

...

kerrotaan,

...

että

...

ollaan

...

tekemässä

...

sovellusta

...

"application",

...

siitä

...

app

...

ja

...

ohjelmaan

...

sisällytetään

...

lähdekoodit

...

SOURCES,

...

nyt

...

terve.cpp

{
Code Block
}
TEMPLATE      = app
HEADERS       = finddialog.h
SOURCES       = finddialog.cpp \
main.cpp
{code}
Varsinainen ohjelma  

Varsinainen ohjelma  terve.cpp

...

on

...

esitetty

...

alla

...

olevassa

...

"laatikossa".

{
Code Block
}
#include <QApplication>
#include "finddialog.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    FindDialog *dialog = new FindDialog;
    dialog->show();
    return app.exec();
}
{code}

h1. Dialogin otsikkotiedosto

Dialogin otsikkotiedosto

Code Block


{code}
#ifndef FINDDIALOG_H //estetään ,ettei otsikkotiedostoa ladata montaa kertaa
#define FINDDIALOG_H

#include <QDialog>
#include <QLabel>
class#include QCheckBox;<QCheckBox>
class#include QLabel;<QLineEdit>
class#include QLineEdit;<QPushButton>
class#include QPushButton;<QHBoxLayout>

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 //define-maarittelyn loppu

Dialogin toteutus

Code Block
{code}

h1. Dialogin toteutus
{code}
#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());
}

{code}