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)

Podobne dokumenty