• 6403阅读
  • 3回复

如何改变 QDirModel中标题项的名 [复制链接]

上一主题 下一主题
离线duduqq
 

只看楼主 倒序阅读 楼主  发表于: 2008-11-18
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
程序中有一个QTableView,要显示一个文件夹中的文件名和大小,部分代码如下
tableView = new QTableView(this);
model = new QDirModel;
tableView->setModel(model);
model->setHeaderData(0, Qt::Horizontal, QObject::tr("File"));
model->setHeaderData(1, Qt::Horizontal, QObject::tr("Size"));

但标题没有变化,第一项中的名依然是Name,要如何才能改变这个名,如果不是用QDirModel是可以改变这个标题名的,但显示文件很麻烦,哪位高手改过的能指导一下吗。
离线vrcats
只看该作者 1楼 发表于: 2008-11-18
重写QDirModel::headerData(...) 这个个虚函数。默认的QDirModel这个函数里面是这么写的:
case 0: return tr("Name");
case 1: return tr("Size");
...
你知道怎么改了吧?当然还是要参考源代码的。
离线duduqq

只看该作者 2楼 发表于: 2008-11-19
引用第1楼vrcats于2008-11-18 20:51发表的  :
重写QDirModel::headerData(...) 这个个虚函数。默认的QDirModel这个函数里面是这么写的:
case 0: return tr("Name");
case 1: return tr("Size");
...
你知道怎么改了吧?当然还是要参考源代码的。

重写这个函数没有用的,这个是返回headerData的值,并不是设置标题的值。
离线vrcats
只看该作者 3楼 发表于: 2008-11-19
#include <QtGui>
#include <QApplication>
#include <QDebug>
#include <QDirModel>
#include <QTreeView>

class myDirModel:public QDirModel
{
    public:
        myDirModel(QObject * parent = 0):QDirModel(parent)
        {
        }
    protected:
        virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const
        {
            if(section==1)
                return QVariant("Vrcats");
            else
                return QDirModel::headerData(section, orientation,role);
        }
};

int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    QTreeView widget;
    myDirModel model;
    widget.setModel(&model);
    widget.setRootIndex(model.index(QDir::currentPath()));
    widget.show();
    return app.exec();
}
快速回复
限100 字节
 
上一个 下一个