- 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 can I align the checkboxes in a view?
In order to align the checkboxes in a view, you need to create your own QStyledItemDelegate [doc.qt.nokia.com] and reimplement paint() [doc.qt.nokia.com] to draw the checkboxes with the alignment that you want.
In order to do this, QStyle::alignedRect() [doc.qt.nokia.com] is used to ensure that it is correctly aligned in the center of the rect for the index, then the base implementation is called with the new information so it takes care of rendering the checkbox.
It is also necessary to reimplement QStyledItemDelegate::editorEvent() [qt.nokia.com] to handle the toggling of the checkbox correctly since the checkbox has actually been moved to a different position, and therefore the events for the index need to be handled correctly.
The following example demonstrates how this can be done:
- #include <QtGui>
- {
- public:
- {
- }
- void paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const
- {
- if (index.column() == 0) {
- option.rect.width() - (2 * textMargin), option.rect.height()));
- viewItemOption.rect = newRect;
- }
- }
- virtual bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option,
- {
- Q_ASSERT(event);
- Q_ASSERT(model);
- // make sure that the item is checkable
- return false;
- // make sure that we have a check state
- if (!value.isValid())
- return false;
- // make sure that we have the right event type
- option.decorationSize,
- option.rect.width() - (2 * textMargin),
- option.rect.height()));
- return false;
- return false;
- } else {
- return false;
- }
- }
- };
- static int ROWS = 3; static int COLS = 1;
- {
- Q_OBJECT
- public:
- {
- setItemDelegate(new ItemDelegate(this));
- for (int i=0; i<rowCount(); ++i) {
- for (int j=0; j<columnCount(); ++j) {
- }
- }
- }
- };
- #include "main.moc"
- int main(int argc, char **argv)
- {
- Table w;
- w.show();
- return a.exec();
- }

No comments