给View换字体

时间:2024-01-11 19:46:02

注意,给View换字体是直接换。在Delegate里换的只是某一列的字体

class delegate : public QStyledItemDelegate
{
public:
delegate(QObject* parent = ) : QStyledItemDelegate(parent)
{} void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
{
QStyledItemDelegate::paint(painter, option, index);
}
}; int main(int argc, char* argv[])
{
QApplication a(argc, argv); QStringList list;
list << "a" << "b" << "c"; QListWidget w;
w.setFont(QFont("Courier", ));
delegate d;
w.setItemDelegate(&d);
w.addItems(list);
w.show(); QListView lv;
lv.setFont(QFont("Courier", ));
lv.setItemDelegate(&d);
QStringListModel m;
m.setStringList(list);
lv.setModel(&m);
lv.show(); return a.exec();
}

参考:http://www.qtcentre.org/archive/index.php/t-29871.html

-----------------------------------------------------------------------

Delegate里也能换字体,但换的是progress自己的字体(如果用到的话),并不对整个view起作用,例如:

void ProgressBarDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
{
if (index.column() == ) {
else {
// good 这里换字体是换进度条(第三列)的字体,但是能起作用
painter->save();
painter->setFont(QFont("Times", , QFont::Bold));
return QStyledItemDelegate::paint(painter, option, index);
painter->restore();
}
}

------------------------------------------------------------------------

另外,设置QTableView的行高是:

QTtableView的verticalHeader()->setDefaultSectionSize(15),既可以放在构造函数里,也可以构造完毕后调用。