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 \

  1. → zruseny parameter flag

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()