- 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)
Use of setCellWidget (in QTableWidget) and signal connections
The widgets set on the cells have nothing to do with the contents of the table, so you won’t get signals from the table in such a case. If you have a row or column of widgets potentially emitting signals, and you want one slot to be notified of the row/column index of the widget that was triggered, then QSignalMapper [qt.nokia.com] could be the way to go.
The following example illustrates how this can be done:
main.cpp
============================================
- #include <QtGui>
- Q_OBJECT
- public:
- for (int i = 0; i< table->rowCount(); i++){
- table->setCellWidget(i,2,cb);
- connect(cb, SIGNAL(currentIndexChanged(int)), signalMapper, SLOT(map()));
- signalMapper->setMapping(cb, i);
- }
- connect(signalMapper, SIGNAL(mapped(int)), this, SLOT(demoSlot(int)));
- layout()->addWidget(table);
- layout()->addWidget(statusBar);
- resize(400,300);
- show();
- }
- public slots:
- void demoSlot(int row){
- "new value: %2").arg(row+1).arg(cb->currentText()), 5000);
- }
- private:
- };
- #include "main.moc"
- int main( int argc, char** argv ){
- CustomWidget w;
- w.show();
- return app.exec();
- }
============================================

No comments