-
UID:202628
-
- 注册时间2020-05-17
- 最后登录2024-04-08
- 在线时间445小时
-
- 发帖395
- 搜Ta的帖子
- 精华0
- 金钱5770
- 威望436
- 贡献值0
- 好评度356
-
访问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();
- }
为啥在代理已经对文本居中显示了,可是运行的结果显示并不是居中的?各位大佬,请问为啥这样做代理好像没有作用?有什么办法可以让代理起作用吗?
|