Dialogin teko ohjelmallisesti, layout ....
...
Qt:n
...
yksi
...
tärkeimmistä
...
tiedostoista
...
on
...
projektitiedosto,
...
tästä
...
...
ohjelma
...
osaa
...
tehdä
...
automaattisesti
...
...
-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 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. |