给View换字体

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

class delegate : public QStyledItemDelegate
{
public:
delegate(QObject* parent = 0) : 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", 30));
delegate d;
w.setItemDelegate(&d);
w.addItems(list);
w.show();

QListView lv;
lv.setFont(QFont("Courier", 30));
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() == 3) {    
    else {
        // good 这里换字体是换进度条(第三列)的字体,但是能起作用
        painter->save();
        painter->setFont(QFont("Times", 10, QFont::Bold));
        return QStyledItemDelegate::paint(painter, option, index);
        painter->restore();
    }
}

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

另外,设置QTableView的行高是:

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

你可能感兴趣的:(view)