ビューにフォントを変更

4366 ワード

注意、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();
    }
}

------------------------------------------------------------------------
また、QTable Viewの行の高さを設定するには:
QTtableViewのverticalHeader()->setDefaultSectionSize(15)は、コンストラクション関数に入れることも、コンストラクションが完了してから呼び出すこともできます.