python - How do i get the row of a widget in a tablewidget in PyQt? -
i have tablewidget comboboxes created pressing button. need row of combobox if interact combobbox changes contents. found this can't understand fully.
#include <qtgui> class tablewidget : public qtablewidget { q_object public: tablewidget() { edit = new qlineedit(this); setcolumncount(5); setrowcount(5); setcellwidget(4,1, edit); connect(edit, signal(textchanged(const qstring)), this, slot(test1(const qstring))); } public slots: void test1(const qstring &text) { qwidget *wid = qapplication::focuswidget(); if (wid) { qmodelindex index = indexat(wid->pos()); qdebug() << index.row(); } } private: qlineedit *edit; }; #include "main.moc" int main(int argc, char** argv) { qapplication app(argc, argv); tablewidget window; window.show(); return app.exec(); }
trying write above in python, have this:
current_widget = qapplication.focuswidget() >> <pyqt4.qtgui.qcombobox object @ 0x0226ddb0>
how use above in indexat function ?
i using qtdesigner.the following table:
self.tablewidget = qtgui.qtablewidget(dialog) self.tablewidget.setgeometry(qtcore.qrect(20, 150, 521, 91)) self.tablewidget.setstylesheet(_fromutf8("background-color: rgb(240, 240, 240);")) self.tablewidget.setframeshape(qtgui.qframe.noframe) self.tablewidget.setshowgrid(false) self.tablewidget.setobjectname(_fromutf8("tablewidget")) self.tablewidget.setcolumncount(3) self.tablewidget.setrowcount(0) item = qtgui.qtablewidgetitem() self.tablewidget.setverticalheaderitem(0, item) item = qtgui.qtablewidgetitem() self.tablewidget.setverticalheaderitem(1, item) item = qtgui.qtablewidgetitem() self.tablewidget.setverticalheaderitem(2, item) item = qtgui.qtablewidgetitem() self.tablewidget.sethorizontalheaderitem(0, item) item = qtgui.qtablewidgetitem() self.tablewidget.sethorizontalheaderitem(1, item) item = qtgui.qtablewidgetitem() self.tablewidget.sethorizontalheaderitem(2, item) self.tablewidget.horizontalheader().setvisible(false) self.tablewidget.horizontalheader().setstretchlastsection(true) self.tablewidget.verticalheader().setvisible(false) self.tablewidget.verticalheader().setstretchlastsection(false)
and how insert combobox widget , insert items in want:
index = self.tablewidget.rowcount() criteria1_combobox = qtgui.qcombobox(self.tablewidget) font = qtgui.qfont() font.setpointsize(10) criteria1_combobox.setfont(font) combo_ind,i in enumerate(["name", "extension", "size"]): criteria1_combobox.additem(_fromutf8("")) criteria1_combobox.setitemtext(combo_ind, qtgui.qapplication.translate("dialog", i, none, qtgui.qapplication.unicodeutf8)) self.tablewidget.setcellwidget(index, 0, criteria1_combobox)
if have qtablewidgetitem
instance, can use row
field. see documentation here.
Comments
Post a Comment