- All (478)
- jom (0)
- Qt Linguist (7)
- Qt Eclipse Integration (9)
- Qt Designer (7)
- Qt Creator (4)
- Qt build system: qmake (31)
- Qt build system: configure (3)
- Qt Assistant (5)
- Printing (4)
- Porting from Qt 3 to Qt 4 (1)
- Plugins (7)
- Qt Visual Studio AddIn (2)
- Qt/MFC Migration (2)
- QtScript (3)
- MDI (2)
- XML (1)
- Widgets (22)
- WebKit (5)
- Tools and Containers (2)
- Threads (2)
- Text Handling (10)
- SQL (6)
- QtTest (1)
- QtService (1)
- Platform: Windows (49)
- Platform: Unix (16)
- Platform: Mac OS X (18)
- Image Formats (2)
- I/O (2)
- Graphicsview (8)
- Font handling (9)
- Event System (18)
- Drag and Drop (4)
- Dialogs (6)
- Desktop integration (3)
- ActiveQt (3)
- Itemviews (60)
- Layout (4)
- Qt Quick (10)
- Qt SDK (1)
- Licensing (2)
- Platform: Embedded Linux (38)
- Painting (32)
- OpenGL (4)
- Object Model (6)
- Network (5)
- Multimedia (3)
- Miscellanous (23)
- Main Window (19)
- Look and Feel (23)
- Development (0)
- Getting Involved (0)
- Routines (0)
How do I make a combobox look similar to the one used in file dialogs?
The differences with the combobox used in a file dialog is that it shows a hierarchical view and although this is possible by padding items with space you run into problems when you have icons as well as text as the icons are not padded.
To achieve this functionality then you can set a QTreeView [doc.qt.nokia.com] on the QComboBox [doc.qt.nokia.com] and with a tweak of some of the settings you can get it to resemble the combobox used on a QFileDialog [doc.qt.nokia.com].
The following is an example of how this can be done:
- #include <QtGui>
- int main(int argc, char **argv)
- {
- QComboBox cb;
- tv->header()->hide();
- si->setText("C:\\");
- si->setIcon(pix);
- childSi->setText("windows");
- childSi->setIcon(pix);
- si->insertRow(0, childSi);
- sim->setItem(0, 0, si);
- cb.setModel(sim);
- cb.setModelColumn(0);
- tv->setRootIsDecorated(false);
- cb.setView(tv);
- cb.show();
- return a.exec();
- }
NB: The call to QTimer::singleShot() is necessary as the expansion of the items needs to occur after the QComboBox and QTreeView are fully initalized after it gets shown.

No comments