| 
UID:202628
注册时间2020-05-17最后登录2025-01-07在线时间456小时
发帖399搜Ta的帖子精华0
金钱5945威望440贡献值0好评度360
访问TA的空间加好友用道具
     | 
 
 如题,写了一个测试的demo,具体代码如下:
 
 
 #if _MSC_VER >= 1600#pragma execution_character_set("utf-8")#endif#include "frmmain.h"#include "itemdelegate.h"FrmMain::FrmMain(QWidget *parent) :    QMainWindow(parent){    this->initUI();}void FrmMain::initUI(){    this->resize(850, 400);    m_tableView = new QTableView(this);    QStandardItemModel* model = new QStandardItemModel();    /* 设置表格标题行(输入数据为QStringList类型) */    model->setHorizontalHeaderLabels({"ID", "文本"});    /* 自适应所有列,让它布满空间 */    m_tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);    ItemDelegate* delegate1 = new ItemDelegate;    m_tableView->setItemDelegateForColumn(1, delegate1);    for (int i = 0; i < 10; i++)    {        model->setItem(i, 0, new QStandardItem(QString("%1").arg(i)));              /* 加载第一列(ID)数据 */        model->setItem(i, 1, new QStandardItem(QString("User%1").arg(i)));         /* 加载第二列(User Name)数据 */    }    /* 设置表格视图数据 */    m_tableView->setModel(model);    this->setCentralWidget(m_tableView);}#include "itemdelegate.h"ItemDelegate::ItemDelegate(QObject *parent)    : QStyledItemDelegate(parent){}void ItemDelegate::paint(QPainter *painter,const QStyleOptionViewItem &option, const QModelIndex &index) const{    if(index.isValid())    {        painter->save();        int nColumn = index.column();        QVariant    vItemData = index.data(nColumn + (Qt::UserRole + 1));        QStyleOptionViewItem viewOpt(option);        if(1 == nColumn)        {            QString strID = vItemData.toString();            painter->drawText(viewOpt.rect, Qt::AlignCenter, strID);        }        painter->restore();    }    QStyleOptionViewItem itemOption(option);    if(itemOption.state&QStyle::State_HasFocus)    {        itemOption.state=itemOption.state^QStyle::State_HasFocus;    }    QStyledItemDelegate::paint(painter,itemOption,index);}#include <QApplication>#include "frmmain.h"int main(int argc, char *argv[]){    QApplication app(argc, argv);    FrmMain w;    w.show();    return app.exec();}
为啥在代理已经对文本居中显示了,可是运行的结果显示并不是居中的?各位大佬,请问为啥这样做代理好像没有作用?有什么办法可以让代理起作用吗?
 
 
 |