Any PyQt developers here?

Thomas Passin list1 at tompassin.net
Fri Oct 28 01:01:13 EDT 2022


This looks like a useful tutorial -

https://doc.qt.io/qt-6/modelview.html

On 10/27/2022 3:47 PM, Thomas Passin wrote:
> 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