Qt - kontenery i plug
Transkrypt
Qt - kontenery i plug
Qt - kontenery i plug-in dla netscape Bogdan Kreczmer ZPCiR ICT PWR pokój 307 budynek C3 [email protected] Copyright c 2003 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego. Jest on udost˛epiony pod warunkiem wykorzystania wyłacznie ˛ do własnych prywatnych potrzeb i może on by ć kopiowany wyłacznie ˛ w całości, razem Kontenery w Qt (cz. 1) QArray – tablica prostych elementów (które nie moga˛ być obiektami), QBitArray – tablica bitów, QPointArray – tablica punktów, QDict – tablica hashowana QIntDict – tablica zawiera zamiast wskaźników pola long, QPtrDict – tablica zawiera wskaźniki char*, QCache – struktura klasy podobna do QDict. Różnica polega na kontroli rozmiaru tablicy, QIntCache – zamiast wskaźników char* zwiera pola long, QList – lista dwukierunkowa, QStrList – lista napisów, QStrIList – lista napisów z rozróżnianiem wielkości liter przy porównywaniu, QStack – realizuje kolejk˛e FIFO, QQueue – realizuje kolejk˛e FILO. Kontenery w Qt (cz. 2) int main(int argc, char argv) { QApplication Aplikacja(argc,argv); QWidget Okno; QMultiLineEdit Edytor(&Okno); Okno.resize(300,150); Aplikacja.setMainWidget(&Okno); Edytor.setGeometry(10,10,230,130); QList char Strona; Strona.append("Tutaj jest kilka linii tekstu."); Strona.append("A to jedna z nich."); Strona.append("To zaś nastepna."); char Tekst; for ( Tekst = Strona.first(); Tekst; Tekst = Strona.next()) Edytor.insertLine(Tekst); Edytor.append(); Edytor.append(" A teraz tekst co druga˛ linie "); QListIterator char Iterator(Strona); for ( Iterator.toFirst(); Iterator.current(); Iterator += 2) Edytor.insertLine(Iterator.current()); Okno.show(); return Aplikacja.exec(); } Kontenery w Qt (cz. 3) int main(int argc, char argv) { QApplication Aplikacja(argc,argv); QWidget Okno; QMultiLineEdit Edytor(&Okno); Okno.resize(300,150); Aplikacja.setMainWidget(&Okno); Edytor.setGeometry(10,10,230,130); QDict char Zestawienie; Zestawienie.insert("Francja","Paryż"); Zestawienie.insert("Grecja","Ateny"); Zestawienie.insert("Hiszpania","Madryt"); Edytor.insertLine(Zestawienie["Francja"]); Edytor.insertLine(Zestawienie["Grecja"]); Edytor.insertLine(Zestawienie["Hiszpania"]); Okno.show(); return Aplikacja.exec(); } Plugin dla netscape’a (cz. 1) class Moj_PluginWidget: public QNPWidget { public: void paintEvent( QPaintEvent wZdarzenie ); }; class Moj_PluginInstance: public QNPInstance { public: QNPWidget newWindow() { return new Moj_PluginWidget; } }; class Moj_Plugin: public QNPlugin { public: QNPInstance newInstance() { return new Moj_PluginInstance; } const char getMIMEDescription() const { return “przyklad_qt/qt:pqt:Przyklad plugin’u w qt“;} const char getPluginNameString() const { return “Bardzo prosty plugin“;} const char getPluginDescriptionString() const { return “Bardzo prosty plugin, ktory nie robi nic ciekawego“;} }; QNPlugin QNPlugin::create() { return new Moj_Plugin; } void Moj_PluginWidget::paintEvent( QPaintEvent wZdarzenie ) { setBackgroundColor(white); QPainter Rysownik(this ); Rysownik.drawRect(rect()); Rysownik.setBrush(red); Rysownik.drawPixmap(5,5,QPixmap(filefloppy)); Rysownik.drawEllipse(80,5,80,20); Rysownik.setClipRect(wZdarzenie- rect()); Rysownik.setFont(QFont(“Times“,18,QFont::Bold)); Rysownik.rotate(-5); Rysownik.drawText(20,40,width(),height(),AlignCenter, “Ten tekst generowany jest przez plugin.“); } Plugin dla netscape’a (cz. 2) <HTML> <HEAD> <TITLE> Bardzo prosty plugin zrealizowany w oparciu o Qt </TITLE> </HEAD> <BODY> <CENTER> <B> Tutaj jest normalny tekst, a ponizej plugin. <P> <EMBED TYPE=przyklad_qt/qt WIDTH=400 HEIGHT=100> <P> <I> Dalej juz tez normalny tekst. </CENTER> </BODY> </HTML> Plugin dla netscape’a (cz. 3)