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

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

Dialogin otsikkotiedosto

Code Block

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

#include <QDialog>
#include <QLabel>
#include <QCheckBox>
#include <QLineEdit>
#include <QPushButton>
#include <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

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

 siitä app ja ohjelmaan sisällytetään lähdekoodit SOURCES, nyt terve.cpp

p, li { white-space: pre-wrap; }

TEMPLATE      = app

HEADERS       = finddialog.h

SOURCES       = finddialog.cpp \

                main.cpp



Varsinainen ohjelma&nbsp; terve.cpp on esitetty alla olevassa "laatikossa"#include <QApplication> // Kyseessä Qt-sovellus
#include <QLabel> // Label eli ilmoitusikkuna

int main(int argc, char *argv[])
{
    QApplication app(argc, argv); //luodaan pinoon sovellus
    QLabel *label = new QLabel("Terve, eka Qt-sovellus!");
    label->show();
    return app.exec(); //täällä ollaan kunnes sovellus sulkeutuu
}


h1.