portovanie do QT4:
Zmeny nad projektom:
1. mame zdrojaky fungujuce na QT3
2. nastavit projektovy subor xxx.kdevelop na R/W a nacitat projekt v kdevelope
3. v kdevelope nastavit v menu Project/Project options zalozka C++ Support a Qt Options
zaskrtnut check box Enable Qt options
v sekcii Qt version, Directory and QMake Binary
vybrat Qt 4
zmazat cestu QMake Binary - si tam potom dohodi svoju
OK a znovu nacitat projekt
4. ak su v projekte ui subory:
ui subory sa oproti Qt3 zmenili - QtDesigner 4 neprecita ui subory generovane Qt Designerom 3 a naopak
pre kazdy ui subor treba pre konveziu zavolat
uic3 -convert StarySubor.ui > NovySubor.ui
uic generuje triedu, ktora uz nie je potomkom QWidgetu - treba do subclassu doplnit dedenie od QWidgetu a v jeho konstruktore
zavolat metodu setupUi(QWidget*), ktoru generuje uic v generovanej triede
odlisnostou oproti QT3 je aj to, ze nazov suboru s triedou XXX, ktory generuje uic je ui_XXX.h a trieda XXX je za namespaceom
Ui a dedi od triedy s nazvom Ui_XXX - treba kuknut dany subor a bude to jasnejsie :-)
5. zmenilo sa toho viac - je treba modifikovat aj nejake zdrojaky; nizsie som popisujem co som musel este zmenit aby som to mohol vykompilit
Zmeny v nasich zdrojakoch: (Qt3 –> Qt4)
V niektorych ui suboroch mi po konverzii zostal riadok <pixmapfunction>qPixmapFromMimeSource</pixmapfunction> a uic potom generuje v h-cku aj #include <Qt3Support/Q3MimeSourceFactory> co je zavislost na Qt3 supporte. Vyhodenim uvedeneho riadku z ui subora sa zmenil h-ckovy subor tak, ze spominany inklud tam uz nebol.
QLabel::StrongFocus –> Qt::StrongFocus
QString text; text.rightJustify(…) –> text.rightJustified(…) ascii() –> toAscii() (toAscii().data()) stripWhiteSpace() –> trimmed() find() –> indexOf() findRev() –> lastIndexOf()
QLabel *label; label→setPaletteBackgroundColor(…) –>
QPalette palette; palette.setColor(label->backgroundRole(), QColor(...)); label->setPalette(palette);
predtym ale este treba nastavit (napr. v konstruktore) label->setAutoFillBackground(true);
podobne setPaletteForegroundColor(), ….
backGroundColor() –> label→palette().color(label→backgroundRole())
QApplication app; app.setMainWidget(…) –> v novych app sa tento riadok vynehava (aspon co som videl v qt4-examples) a funguje to QApplication::setOverrideCursor(const QCursor & cursor, bool replace = FALSE); –> QApplication::setOverrideCursor(const QCursor & cursor);
Qt::Key_BackSpace –> Qt::Key_Backspace
QValueList –> QList QWalueList::remove() –> QList::removeAll() QWalueList::findIndex() –> QList::indexOf() QValueListIterator<EUI::EWID>it; –> QListIterator<EUI::EWID>it(*this→data→w_history);
QWidget widget; widget.polish() –> widget.ensurePolished () isShown() –> isVisible()
QKeyEvent::state() –> QKeyEvent::modifiers() Qt::ShiftButton –> Qt::ShiftModifier , …
v libke eui boli prerobene makra: EUI_CREATE_WINDOW_PH \
EUI_CREATE_WINDOW /
vo formVydaj bola zrusena sipka - treba ju vykreslovat inak
QListView - zostalo, ale zmenila sa filozofia pouzivania Zda sa mi najjednoduchsie nahradit ho QTreeWidgetom. V tomto pripade ide o vypis zoznamu s viacerymi stlpcami, ale iba jednou urovnou vypisovania. Teda su tam iba top-level zaznamy!!! V inom pripade by nahrada metod nemusela byt spravna. setSorting() –> setSortingEnabled() setSorting(podla stlpca) –> sortByColumn ( int column, Qt::SortOrder order ) firstChild() –> topLevelItem(0) lastItem() –> topLevelItem(topLevelItemCount()-1) setSelected() –> treeWidgetItem→setSelected() ensureItemVisible() –> scrollToItem() findItem(string,0,Qt::BeginsWith) –>
QList<QTreeWidgetItem*> list = lvwVyber->findItems(paText, Qt::MatchStartsWith);
if (list.count() > 0)
return list.at(0); //vrati prvy z nich
else
return NULL;
addColumn(); - miesto pridania stlpca sa nastavi pocet stlpcov setColumnCount() addColumn (const QString & label, int width = -1) - pre nastavenie sirky stlpca setColumnWidth (int column, int width) childCount() –> topLevelItemCount() setSelectionMode(QListView::Single) –> setSelectionMode(QAbstractItemView::SingleSelection) setColumnWidthMode() –> resizeColumnToContents() setColumnAlignment(2, Qt::AlignRight); –> treeWidgetItem→setTextAlignment (2, Qt::AlignRight) columns() –> columnCount() QTreeWidgetItem::isOpen –> isExpanded() QTreeWidgetItem::setOpen() –>setExpanded() setDragAutoScroll() –> setAutoScroll() header() –> headerItem() headerItem()→setLabel() –> headerItem()→setText() headerItem()→hide() –> headerItem()→setHidden(true)
QTreeWidgetItemIterator it; it.current() –> (*it)
Zmeny v metodach medzi QListView a QListWidgetom: setSorting() –> setSortingEnabled() firstChild() –> item(0) lastItem() –> item(count()-1) ensureItemVisible() –> scrollToItem()
Zmeny v metodach medzi QListBox a QListWidgetom: insertItem() –> addItem(); changeItem(text, poradie) –> item(poradie)→setText(text)
QTimer changeInterval() –> setInterval() start(mSec, singleShot) –> setSingleShot(bool); start(mSec);
QPixmap convertFromImage() –> fromImage()
QSpinBox: setMinValue() –> setMinimum() setMaxValue() –> setMaximum() setLineStep() –> setSingleStep()
QTable –> QTableWidget horizontalHeader() –> horizontalHeaderItem(poradie) horizontalHeader()→setLabel(poradie, text) –> horizontalHeaderItem(poradie)→setText(text) numCols() –> columnCount() setText(row, col, text) –> item(row, col)→setText(text)
QProgressBar:
QFile: open(IO_ReadOnly) –> open(QIODevice::ReadOnly) setName() –> setFileName()
QCustomEvent::User –> QEvent::User
QWidgetStack –> QStackedWidget raiseWidget() –> setCurrentWidget()
QDataStream: writeRawBytes() –> writeRawData()
QTextStream: setEncoding() –> setCodec()
QDir: setNameFilter() –> setNameFilters()
QFileInfo: absFilePath() –> absoluteFilePath()