.OHLQHU(LQEOLFNLQ47
'LHYRUOLHJHQGH(LQIKUXQJHQWVWDQGXQWHU 9HUZHQGXQJGHU47(LQIKUXQJYRQ
http://ni.cs.tu-berlin.de/lehre/C-Praktikum
(wir danken den Berlinern!!)
:DVLVW47"
*8, %LEOLRWKHNIU&
& .ODVVHQ]XU,PSOHPHQWLHUXQJ YRQ%XWWRQV %R[HVXQG DQGHUHQ JUDILVFKHQ*HVWDOWXQJVHOHPHQWHQÅ:LGJHWV´
YRUKHUGLUHNWH3URJUDPPLHUXQJYRQ81,;;Q|WLJ 47ELHWHW HLQIDFKH0|JOLFKNHLWHQ
]XU(UVWHOOXQJYRQ)HQVWHU2EMHNWHQGHV *8,
]XP=HLFKQHQYRQ3XQNWHQ/LQLHQDXFKNRPSOH[HQ)LJXUHQ 'DUVWHOOXQJYRQ*UDILNHQ
H[LVWLHUW IU81,; /LQX[ XQG:LQGRZV[17N
VHLWYRQGHUQRUZHJLVFKHQ)LUPD Å7UROOWHFK´
www.trolltech.com HQWZLFNHOWXQGHUZHLWHUW
DNWXHOOH9HUVLRQ8QL8OP
5HIHUHQ]'RNXPHQWDWLRQ
'LH5HIHUHQ]'RNXPHQWDWLRQYRQ4W EHILQGHWVLFK RQOLQHXQWHU http://doc.trolltech.com
XQGDXIGHU&339RUOHVXQJVSDJH
8QWHU Å7XWRULDO´ ILQGHQVLFKJXWHUNOlUWHNOHLQH
3URJUDPPEHLVSLHOHGLHLQ6FKULWWHQ]XHLQHPHLQIDFKHQ 6SLHOHUZHLWHUWZHUGHQ
,QGHUÅ$QQRWDWHG &ODVV /LVW´ EHNRPPWPDQ .XU]EHVFKUHLEXQJHQGHUHLQ]HOQHQ.ODVVHQ
8QWHUGHQ3XQNWHQ Å2YHUYLHZ´ ILQGHQVLFK*UXQGOHJHQGH OHVHQVZHUWH,QIRUPDWLRQHQ]XYLHOHQ7KHPHQ8QWHU
$QGHUHP
4W2EMHFW0RGHOO6LJQDO6ORW0HFKDQLVPXV
0HWD2EMHFW&RPSLOHU XQGYLHOHVDQGHUH
hEHUVLFKWEHUGLH.ODVVHQKLHUDUFKLH
4W 3URJUDPPHFRPSLOLHUHQ
(LQIDFKH4W 3URJUDPPHRKQHVHOEVGHILQLHUWH 6LJQDOV6ORWV
export QTDIR=/usr/local/qt-2.3.1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QTDIR/lib
FRPSLOLHUHQ
g++ -c -Wall -I$QTDIR/include -o myprog.o myprog.cc
OLQNHQ
g++ -L$QTDIR/lib -lqt -o myprog myprog.o
IDOOV EHQXW]HUGHILQLHUWH6LJQDOH6ORWV YHUZHQGHWZHUGHQ
GDQQPX GLH.ODVVHQGHILQLWLRQHU]HXJW ZHUGHQPLWGHP 0HWD 2EMHFW&RPSLOHU moc
:HLWHUH.RPSLODWLRQV XQG/LQN6FKULWWHHUIROJHQGDQQPLW g++
%DVLVNODVVH QObject
QObject LVWGLH
%DVLVNODVVH IDVW
DOOHU 4W 2EMHNWH
.RQVWUXNWRU HUKlOW]ZHL3DUDPHWHU
QOject(QObject *parent=NULL,const char *name=0);
parent LVWGHU9DWHUNQRWHQLQGHULQWHUQHQEDXPDUWLJHQ +LHUDUFKLH
LP9DWHUNQRWHQLVWGDVQHXHUVWHOOWH2EMHNWQXQDOV.LQG2EMHNWUHJLVWULHUW
const QObjectList* QObject::children () const;
QObject* QObject::parent () const;
parent=NULL ² GDV2EMHNWKDWNHLQHQ9DWHU ⇒ 7RSOHYHO2EMHFW 9DWHUNQRWHQNDQQ
QXULP .RQVWUXNWRU IHVWJHOHJWZHUGHQ VSlWHUQLFKWPHKUYHUlQGHUWZHUGHQ
$OOH ,QVWDQ]HQYRQ QObject VROOWHQPLW new DQJHOHJW ZHUGHQ 3RO\PRUSKLH
%HLP/|VFKHQHLQHU,QVWDQ]YRQ QObject ZHUGHQDOOH.LQGHUPLW
delete JHO|VFKWUHNXUVLYDXFKGHUHQ.LQGHU
'HQ1DPHQGHV2EMHNWVOLHIHUW const char* QObject::name() const
%DVLVNODVVH QObject
6LJQDO 6ORW 0HFKDQLVPXV
,QWHUDNWLRQGHV%HQXW]HUVPLWGHU*8,HUIROJWEHU6LJQDOV 6ORWV ,QMHGHUYRQ QObject DEJHOHLWHWHQ.ODVVHN|QQHQQHXH
0HWKRGHQDOV6LJQDOH E]Z6ORWV GHILQLHUWZHUGHQ
6LJQDOHVHQGHQ1DFKULFKWHQDXVHLQHP2EMHNWKHUDXV
6ORWVHPSIDQJHQ1DFKULFKWHQ
(LQ6LJQDOZLUGPLWHLQHP 6ORW YHUEXQGHQGXUFKGLH VWDWLVFKH 0HWKRGH
bool QObject::connect(QObject *sender , char * signal_n, Qobject *receiver, char * slot_n) const;
6LJQDO6ORW¶VELHWHQKRKH)OH[LELOLWlW
-HGH.ODVVHNDQQEHOLHELJH$Q]DKOQHXHU6LJQDOH XQG6ORWVGHILQLHUHQ
9HUVFKLFNWH1DFKULFKWHQN|QQHQ
EHOLHELJH$Q]DKOYRQ$UJXPHQWHQHQWKDOWHQ
GLHDOOHYRPEHOLHELJHQ7\SVHLQN|QQHQ
)OH[LELOLWlWYRQ6LJQDOV6ORWVFRQW
(LQ 6ORW NDQQ1DFKULFKWHQYRQPHKUHUHQ6LJQDOHQYRQ XQWHUVFKLHGOLFKHQ2EMHNWHQHPSIDQJHQ
(LQ6LJQDONDQQPLWPHKUHUHQ6ORWVYHUEXQGHQVHLQ
GLHYHUVFKLFNWH1DFKULFKWZLUGDQMHGHQDQJHVFKORVVHQHQ 6ORWJHOHLWHW
'LH$XIUXIUHLKHQIROJHLVWGDEHLQLFKWIHVWJHOHJW
%HLP/|VFKHQHLQHV QObject V ZHUGHQLP'HVWUXNWRUDOOH 9HUELQGXQJHQJHO|VFKWGLHYRQVHLQHQ6LJQDOHQDXVJHKHQ RGHUGLH]XVHLQHQ6ORWVIKUHQ
1DFKWHLOH
6LJQDOV 6ORWV EHGUIHQHLQHU]XVlW]OLFKHQ .RPSLODWLRQ PLW
moc
6LJQDOV 6ORWV VLQGHWZDVODQJVDPHUDOVHLQIDFKH
6LJQDO 6ORW 0HFKDQLVPXV
$XIEDXHLQHUYRQ QObject DEJHOHLWHWHQ.ODVVH
6LJQDOVXQG6ORWVZHUGHQLQGHU.ODVVHQGHILQLWLRQZLH QRUPDOH0HWKRGHQ GHNODULHUW
5FNJDEHW\S void EHOLHELJH3DUDPHWHU $Q]DKOXQG7\SHQ
GLH=HLOHGHU.ODVVHQGHILQLWLRQPXHLQ0DNURDXIUXIHQ
Q_OBJECT RKQHDEVFKOLHHQGHV6HPLNRORQ
LQGHU'HNODUDWLRQZHUGHQGLHQHXH 6SH]LIL]LHUHU YHUZHQGHW
^ private _ public _ protected `^ signals _ slots `
9RP3URJUDPPLHUHUGHILQLHUWZHUGHQQXU 6ORWV
6ORWVVLQGJHZ|KQOLFKH0HWKRGHQ
6ORWV N|QQHQZLHJHZ|KQOLFKH0HWKRGHQDXIJHUXIHQZHUGHQ
&RGHIU6LJQDO0HWKRGHQZLUGYRP moc HU]HXJW
GDUIQLFKW YRP3URJUDPPLHUHUJHVFKULHEHQZHUGHQ
6LJQDO 6ORW 0HFKDQLVPXV
class NewClass : public QObject{
Q_OBJECT
public: // public Methoden, Konstruktoren signals:
void signal1(int,const char*);
public slots:
void slot1(double dvalue,QString &q_str);
private slots:
void slot2();
private: // private Methoden und Attribute };
6LJQDO 6ORW 0HFKDQLVPXV %HLVSLHO
=XP9HUELQGHQYRQ6LJQDOVXQG6ORWV ZLUG
connect() EHQXW]W
bool QObject::connect(QObject* sender , char* signal_n , QObject* receiver , char* slot_n) const;
sender XQG signal VSH]LIL]LHUHQGDVVHQGHQGH2EMHNW XQGVHLQH6LJQDO0HWKRGH
receiver XQG slot VSH]LIL]LHUHQGDVHPSIDQJHQGH2EMHNW XQGVHLQH6ORW0HWKRGH
QPushButton quit( "Quit" ,0 ); // neuer Pushbutton
QObject::connect( &quit, SIGNAL(clicked()), &a, SLOT(quit()) );
'DV(LQKlQJHQ GHU0HWKRGHQJHVFKLHKW GDEHLPLWGHQ 0DNURV 6,*1$/XQG6/27
6LJQDO 6ORW 0HFKDQLVPXV
(LQH9HUELQGXQJNDQQGXUFK disconnect JHO|VWZHUGHQ
bool QObject::disconnect(QObject* sender , char* signal , QObject* receiver , char* slot );
..., RGHUGXUFKDXWRPDWLVFKH$XIO|VXQJEHLP
=HUVW|UHQHLQHVGHUEHLGHQ2EMHNWH
'XUFKGDV0DNUR emit() ZLUGNQVWOLFKHLQ 6LJQDO LP3URJUDPPHU]HXJW
'HU7H[WGXUFKGHQ emit() HUVHW]WZLUGLVWOHHU
emit(mysignal()); -> mysignal();
(VKDQGHOWVLFKDOVROHGLJOLFKXPHLQH0DUNLHUXQJIU GHQ 3URJUDPPLHUHU
6LJQDO 6ORW 0HFKDQLVPXV
:HLWHUH(LJHQVFKDIWHQYRQ6LJQDOHQ XQG 6ORWV
,QHLQHU6ORW0HWKRGHNDQQHUPLWWHOWZHUGHQ YRQ ZHOFKHP 2EMHNWGDVJHVHQGHWH6LJQDONDP const QObject *sender();
:XUGHGHU6ORWQLFKWYRQHLQHP6LJQDODNWLYLHUWLVWGLH5FNJDEH XQGHILQLHUWE]ZVHQGHU 18//
3DUDPHWULVLHUXQJHQ YRQ6LJQDOHQ XQG 6ORWV PXVVEHUHLQVWLPPHQ 6LJQDOV6ORWVN|QQHQEHOLHELJYLHOH3DUDPHWHUYRQEHOLHELJHP7\SKDEHQ hEHUSUIXQJGHU 3DUDPHWULVLHUXQJ HUIROJW]XU/DXI]HLW
)HKOHUPHOGXQJDXI stderr GDV3URJUDPPOlXIWDEHUZHLWHU
default 3DUDPHWHUVLQGIU6LJQDOVXQG6ORWVQLFKWHUODXEW
%ORFNLHUHQYRQ6LJQDOHQ
blockSignals(TRUE) EORFNLHUW
blockSignals(FALSE) KHEWGLH%ORFNLHUXQJZLHGHUDXI
6LJQDO 6ORW 0HFKDQLVPXV
0HWD2EMHFW &RPSLOHU
=XU1XW]XQJGHV6LJQDO6ORW.RQ]HSWVPXPDQHLJHQH.ODVVHQ GHILQLHUHQGLHYRQ QObject DEJHOHLWHWVLQG
$XV GHU'DWHLPLWGHU.ODVVHQGHILQLWLRQPHLVWHLQH +HDGHU'DWHL PXPLW+LOIHGHV 0HWD2EMHFW &RPSLOHUV moc HLQH
]XVlW]OLFKH'DWHLHU]HXJWZHUGHQPRFB
*UXQGVlW]OLFKELHWHQVLFK]ZHL:HJHEHLGHU%HQXW]XQJGHV
moc DQ
0HWKRGH
'DVPLWPRFHU]HXJWH3URJUDP GHU .ODVVHQGHILQLWLRQZLUG LQHLQHP HLJHQHQ6FKULWW]XHLQHU2EMHNWGDWHLNRPSLOLHUWPLW g++ XQG HUVW EHLP/LQNHQPLW g++ ]XUDXVIKUEDUHQ'DWHLKLQ]XJHIJW
0HWKRGH
'DVPLWPRFHU]HXJWH3URJUDPP GHU .ODVVHQGHILQLWLRQZLUG PLWWHOV
HLQHU #include $QZHLVXQJLQ GHQ4XHOO&RGHHLQJHIJW
0HWD 2EMHFW &RPSLOHU %HLVSLHO
// Datei myclass.h
class MyClass:public Qobject { Q_OBJECT
public: // Konstruktor
MyClass(QObject *parent=0, const char *name=0);
// mehr Methoden und Signale };
// Datei myclass.cpp
#include “myclass.h“
#include “moc_myclass.cpp“ // 2.Fall MyClass::MyClass(QObject* parent,
const char* name) : QObject(parent,name){
// Code des Konstruktors }
// mehr Methoden und Slots
Kompilationsvorgang nach Methode 1:
thales$ moc myclass.h -o moc_myclass.cpp thales$ g++ moc_myclass.cpp -o moc_myclass.o thales$ g++ myclass.cpp -o myclass.o
thales$ g++ myclass.o moc_myclass.o main.o -o main -L... -l...
Kompilationsvorgang nach Methode 2:
thales$ moc myclass.h -o moc_myclass.cpp
Include von moc_myclass.cpp in myclass.cpp statt in myclass.h thales$ g++ myclass.cpp -o myclass.o
thales$ g++ myclass.o main.o -o main -L... -l...
QWidget
:LGJHWVJUDILVFKH(OHPHQWH ZHUGHQPLW GHU.ODVVH QWidget
HU]HXJWE]ZYRQLKUDEJHOHLWHW
QWidget VHOEVWLVW YRQ QObject DEJHOHLWHW
MHGHV:LGJHWZLUGLQQHUKDOEGHVVHQ9DWHU:LGJHWV GDUJHVWHOOW 3RVLWLRQZLUGUHODWLY]XUOLRE(FNHGHV9DWHU:LGJHWV DQJHJHEHQ :LGJHWV RKQH9DWHUVLQG7RSOHYHO:LGJHWV
QWidget GHILQLHUWHLQLJHDOOJHPHLQJOWLJH0HWKRGHQ V 5HI'RN
]%GDUVWHOOHQ YHUVWHFNHQYRQ :LGJHWV
virtual void show(); virtual void hide();
)XQNWLRQDOWlW GHV :LGJHWV VWHXHUQ² HLQ RGHUDXVVFKDOWHQ
virtual void setEnabled(bool);
QDFKGHU(U]HXJXQJVLQGDOOH:LGJHWSHU GHIDXOW HQDEOHG HVNDQQ0DXVNOLFNVXQG7DVWDWXUHLQJDEHQHUKDOWHQ
0LW setEnabled(FALSE); NDQQGDV:LGJHW DXVJHVFKDOWHWZHUGHQ
'DV :LGJHW LVWLPPHUQRFKVLFKWEDUMHGRFKJUDXXQWHUOHJW
QWidget
EHVFKUlQNHQGHUJHRPHWULVFKHQ$EPHVVXQJHQGHV :LGJHWV
virtual void setMinimumSize(int minWid, int minHei );
virtual void setMaximumSize(int maxWid, int maxHei );
void setFixedSize (int width , int height );
VHW]HQGHUDNWXHOOHQ$EPHVVXQJHQ JHRPHWU\XQG3RVLWLRQGHV :LGJHWV
virtual void setGeometry(int x, int y, int w, int h); // Pos&Größe virtual void resize ( int w, int h ); //setzt nur Größe
VHW]HQGHU+LQWHUJUXQGIDUEHGHV :LGJHWV
virtual void setBackgroundColor (const QColor& color);
Qcolor LVWHLQH 4WHLJHQH.ODVVHGLH)DUEHQEHVFKUHLEW .RQVWUXNWRU QColor(int r, int g, int b); QDFK5*%
%HLVSLHO QColor black(0,0,0); QColor red(255,0,0); HWF
VHW]HQGHU6FKULIWDUW)RQWIUGDV :LGJHW XQGDOOHVHLQH.LQGHU
virtual void setFont(const QFont& font);
%HLVSLHO QFont f(“Helvetica“,12,QFont::Bold);setFont(f);
.ODVVH QApplication
'DV2EMHNWGHU.ODVVH 4DSSOLFDWLRQ
EHUQLPPWGLH.RQWUROOHEHUGLH,QWHUDNWLRQPLWGHP%HQXW]HU ,QQHUKDOEGHV.RQVWUXNWRUVHUOHGLJWGLHVHV2EMHNW
+HUVWHOOXQJHLQHU6RFNHWYHUELQGXQJ]XP;6HUYHUXQWHU8QL[
IDOOVQLFKWHUIROJUHLFK ⇒ 3URJUDPPDEEUXFK
$XVZDKOHLQHU)DUESDOHWWH
$QOHJHQXQG,QLWLDOLVLHUHQLQWHUQHU'DWHQVWUXNWXUHQ ]XU9HUZDOWXQJGHU)HQVWHUDXIGHP%LOGVFKLUP
3URJUDPPHHQWKDOWHQLPPHUQXUHLQ QApplication 2EMHNW
'DV QApplication 2EMHNW
QLPPWDOOH(UHLJQLVVH(YHQWVYRQ7DVWDWXUXQG0DXVHQWJHJHQ YHUWHLOWGLHVHZHLWHUDQHQWVSUHFKHQGH4W2EMHNWH
GRUWZHUGHQGDQQHQWVSUHFKHQGH$NWLRQHQDXVJHIKUW
.ODVVH QApplication
*UXQGDXIEDXHLQHU4W$SSOLNDWLRQ
// Datei main.cpp
#include <qapplication.h>
int main(int argc,char **argv){
// Erzeugung eines Objekts der Klasse QApplication
QApplication(argc,argv); // soll als erstes im Programm erfolgen // Zugriff argc, argv: int argc() const;
...
// Initialisierung und Anzeige von Fenstern..., // der eigentliche Code!
// Haupt-Event Schleife wird mit app.exec() gestartet und wartet bis // QApplication::exit(int retcode=0) aufgerufen
// oder das Widget "zerstört" wird,
// z.B. mit: app.quit() [slot] ≡≡ QApplication::exit(0) return app.exec();
}
QPushButton
QPushButton HUEWYRQGHUDEVWUDNWHQ.ODVVH QButton GLHYRQ QWidget HUEW
,Q QButton VLQG0HWKRGHQGHILQLHUW GLHDOOHQ%XWWRQ7\SHQJHPHLQVDPVLQG GLHHLQ%XWWRQEHUHLWVWHOOW
QString text() const; QButtonGroup* group() const;
virtual void setText(const QString&);
QPushButton VWHOOWHLQHQ$NWLRQVEXWWRQ GDU
9HUELQGXQJHLQHV QPushButton ¶VPLWHLQHP6ORW
GDV6LJQDO]% QPushButton::clicked() ZLUGYHUEXQGHQPLW GHPJHZQVFKWHQ6ORW 0HWKRGHHLQHV2EMHNWV)XQNWLRQ
'DV6LJQDO clicked() ZLUGGDQQJHVHQGHWZHQQ
mousePressEvent mouseReleaseEvent EHUGHP QPushButton
UHJLVWULHUWZXUGHQ 0DXVWDVWHGUFNHQXQGZLHGHUORVODVVHQ
QPushButton
// Datei qpushbutton1.cpp
#include <qapplication.h> // für Klasse QApplication
#include <qwidget.h> // qwidget.h nicht unbedingt // notwendig, da
#include <qpushbutton.h> // qpushbutton.h inkludiert int main(int argc,char **argv)
{
QApplication app(argc,argv);
QWidget *w=new QWidget();
w->resize(200,100);
w->setCaption(“QPushButton Example“);
QPushButton *pb=new QPushButton(“Exit“,w); // w ist Vater pb->setGeometry(50,25,100,50); // Koord. relativ z.
// ob.-li. Ecke // connect verbindet Signal clicked() mit quit() von app QObject::connect(pb,SIGNAL(clicked()),qApp,SLOT(quit()));
w->show(); // zeigt das Widget; default: not shown app.setMainWidget(w); // w ist Hauptwidget
return app.exec();
}
ein QPushButton
gedrückt:
QRadioButton
'LHIROJHQGHQ :LGJHWVVLQGDEJHOHLWHWYRQ QWidget
QRadioButton V ODVVHQGHQ%HQXW]HUJHQDXHLQH$OWHUQDWLYH DXVHLQHU5HLKHYRQ 0|JOLFKNHXWHQ DXVZlKOHQ
.RQVWUXNWRUHQ
QRadioButton(const QString &text,QWidget *parent);
... ... ...
0HWKRGHQ
bool isChecked() const; ...
virtual void setChecked(bool ch);
... ... ...
... ... ...
6LJQDOH JHHUEWYRQ QButton
void clicked(); ...
void stateChanged(int); ...
QCheckBox
QCheckBox HV ODVVHQGHQ%HQXW]HUHLQ,WHP ÅDQNUHX]HQ´ ELW ,QIRUPDWLRQÅDQDXV´
.RQVWUXNWRUHQ
QCheckBox(QWidget* parent);
QCheckBox(const QString& text, Qwidget* parent);
0HWKRGHQ
bool isChecked() const; void setChecked(bool check);
JHHUEWH0HWKRGHQ
virtual void setText(const QString& text);
virtual void setPixmap(const QPixmap& pixmap);
QString text() const;
JHHUEWH6LJQDOH
void pressed();
void toggled(bool on);
QLabel
0LW QLabel OlVVW VLFKHLQIDFKHU7H[WEHTXHP GDUVWHOOHQ
.RQVWUXNWRUHQ
QLabel(QWidget *parent,const char* name=0,WFlags f=0);
QLabel(const QString & text,QWidget *parent);
0HWKRGHQ
QString text() const;
virtual void setAlignment(int alignm);
void setIndent(int indentation);
int indent(void) const;
6ORWV
virtual void setText(const QString& text);
virtual void setPixmap(const QPixmap& pixmap);
virtual void setMovie(const QMovie& movie);
void clear(void);
IHQVWHUIODJV
QListBox
QListBox OlWGHQ%HQXW]HUHLQRGHU PHKUHUH ,WHPV DXVHLQHU/LVWHDXVZlKOHQ .RQVWUXNWRUHQ
QListBox(QWidget* parent=0,const char* name=0,WFlags f=0);
0HWKRGHQ
void insertItem(const QString& text, int index=-1);
void insertItem(const QPixmap& pixmap, int index=-1 );
void changeItem(const QString& text, int index);
virtual void setCurrentItem(int index);
int currentItem() const;
QString currentText(void) const;
QString text(int index) const;
void clear(void);
6LJQDOV 6ORWV
void selected(int index);
virtual void clearSelection(void);
void selectAll(bool select);
ZHLWHUH:LGJHWNODVVHQ
QLineEdit XQG QMultiLineEdit VWHOOHQ
(LQJDEHIHOGHU GDU LQGLHGHU %HQXW]HUHLQH RGHUPHKUHUH 7H[W]HLOHQ KLQHLQVFKUHLEHQNDQQ
(LQH QComboBox EHQ|WLJWZHQLJHU3ODW]DOV QListBox
KDWDEHUDQVRQVWHQHLQVHKUlKQOLFKHV9HUKDOWHQ
QMenuBar XQG QPopupMenu HU]HXJHQ3XOO'RZQ0HQXV
QMessageBox
QMessageBox VWHOOWHLQH NXU]H%RWVFKDIWGDU
HLQ6WULQJHLQ,FRQELV]X GUHL%XWWRQV
GUHLYHUVFKLHGHQH7\SHQ
,QIRUPDWLRQLQQHUKDOE QRUPDOHQ3URJUDPPDEODXIV :DUQLQJ]XU:DUQXQJGHV
%HQXW]HUVIUXQJHZ|KQOLFKH )HKOHU
&ULWLFDOIUNULWLVFKH)HKOHU
QMessageBox (2)
(V ZLUGGLH1XPPHUGHV JHGUFNWHQ%XWWRQV
]XUFNJHOLHIHUW
VRNDQQLP switch .RQVWUXNW DXI GLH%HQXW]HUHQWVFKHLGXQJ UHDJLHUWZHUGHQ
%VS
switch(QMessageBox::warning(...)){
case 0: /* try again */;
break;
case 1: /* exit */;
break;
}
QFileDialog
QFileDialog VWHOOWHLQH 'LDORJ%R[EHUHLWPLWGHU 'DWHLHQ RGHU9HU]HLFKQLVVH DXVJHZlKOW ZHUGHQN|QQHQ
6WDWLVFKH0HWKRGHQ
QString getOpenFileName(...);
QStringList getOpenFileNames( ... );
QString getSaveFileName(...);
%VS
QString s(QFileDialog::getOpenFileName(QString::null,\
“Images (*.jpg)“,this));
if(s.isEmpty()) return;
// your method open()
open(s);
'HVLJQHU $QTDIR/bin/designer
(LQHYRP'HVLJQHU
HUVWHOOWH'DWHLHQWKlOW GDV8VHU,QWHUIDFH XLLQ;0/)RUPDW
VLHNDQQYLD uic LQ&
&RGHEHUVHW]WZHUGHQ PLW
thales$ $QTDIR/bin/uic
XVHULQWHUIDFHFRPSLOHU