Any PyQt developers here?

Thomas Passin list1 at tompassin.net
Thu Oct 27 15:47:49 EDT 2022


On 10/27/2022 11:15 AM, DFS wrote:
> On 10/25/2022 1:45 PM, Thomas Passin wrote:
>> On 10/25/2022 1:03 PM, DFS wrote:
>>> Having problems with removeRow() on a QTableView object.
>>
>> removeRow() isn't listed as being a method of a QTableView, not even 
>> an inherited method, so how are you calling removeRow() on it? (See 
>> https://doc.qt.io/qt-6/qtableview-members.html)
> 
> Since you helped me on the last one, maybe you could try to answer a 
> couple more [probably simple] roadblocks I'm hitting.
> 
> 
> I just wanna set the font to bold/not-bold when clicking on a row in 
> QTableView.
> 
> 
> 
> With a QTableWidget I do it like this:
> 
> font = QFont()
> font.setBold(True) or False
> QTableWidget.item(row,col).setFont(font)
> 
> 
> 
> But the QTableView has data/view 'models' attached to it and that syntax 
> doesn't work:
> 
> 
> Tried:
> font = QFont()
> font.setBold(True) or False
> model = QTableView.model()
> model.setFont(model.index(row,col), font)
> 
> Throws AttributeError: 'QSqlTableModel' object has no attribute 'setFont'
> 
> 
> This doesn't throw an error, but doesn't show bold:
> model.setData(model.index(tblRow, col), font, Qt.FontRole)
> 
> 
> Any ideas?

You definitely need to be setting the font in an item.  I'm not sure but 
I think that your QFont() doesn't have any properties, so it doesn't do 
anything.  I found this bit in a page - it's in C++ instead of Python 
but that doesn't really make a difference except for the exact syntax to 
use -

 
https://forum.qt.io/topic/70016/qlistview-item-font-stylesheet-not-working/4

       QVariant v = ModelBaseClass::data(index,role);
       if( condition && role == Qt::FontRole )
       {
                QFont font = v.value<QFont>();
                     font.setBold( true );
                v = QVariant::fromValue<QFont>( font );
       }

IOW, you have to get the font from the item, then set it to bold, which 
you would do with setFont().  Then you set that new font on the item. Of 
course you would have to unset bold on it later. See

https://doc.qt.io/qt-6/qtablewidgetitem.html#font

Instead of "item", you might need to operate on "row".  I didn't look 
into that.  Since a row probably doesn't have just one font (since it 
can have more than one item), you'd still have to get the font from some 
item in the row.

You might also be able to make the item bold using CSS, but I'm not sure.

> Thanks

Internet searches are your friend for questions like this.  I've never 
worked with a QTableView, so I had to start with some knowledge about 
some other parts of QT.  I found the first page searching for "qt set 
qtableview row font", and the second searching for "qtablewidgetitem".



More information about the Python-list mailing list