gpt4 book ai didi

c++ - Qt 表小部件。如何一起设置垂直标题和水平标题的含义/标题?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:01:51 24 4
gpt4 key购买 nike

我知道如何将文本标签设置到行或列标题中。但我想做这样的事情:

http://i.stack.imgur.com/eMM6U.jpg

我找不到任何关于如何在红色圆圈内做这件事的信息。我开始相信这不能用 QTableWidget 来完成。

谢谢;)

最佳答案

我认为使用标准标题 (QHeaderView) 是不可能的 because of :

Note: Each header renders the data for each section itself, and does not rely on a delegate. As a result, calling a header's setItemDelegate() function will have no effect.

所以你需要忘记它并禁用它,你应该实现你自己的标题(设置你的颜色,你的文本等等),但我当然会帮助意义/标题。我通过下一个项目委托(delegate)实现了这一点:

.h:

#ifndef ITEMDELEGATEPAINT_H
#define ITEMDELEGATEPAINT_H

#include <QStyledItemDelegate>

class ItemDelegatePaint : public QStyledItemDelegate
{
Q_OBJECT
public:
explicit ItemDelegatePaint(QObject *parent = 0);
ItemDelegatePaint(const QString &txt, QObject *parent = 0);


protected:
void paint( QPainter *painter,
const QStyleOptionViewItem &option,
const QModelIndex &index ) const;
QSize sizeHint( const QStyleOptionViewItem &option,
const QModelIndex &index ) const;
QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const;
void setEditorData(QWidget * editor, const QModelIndex & index) const;
void setModelData(QWidget * editor, QAbstractItemModel * model, const QModelIndex & index) const;
void updateEditorGeometry(QWidget * editor, const QStyleOptionViewItem & option, const QModelIndex & index) const;

signals:

public slots:

};

#endif // ITEMDELEGATEPAINT_H

但是所有这些方法在这里都不是很有用,你可以通过一些具体的操作自己实现它,我将向你展示主要方法 - paint()

void ItemDelegatePaint::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
if(index.row() == 0 && index.column() == 0)
{
QRect source1 = QRect(option.rect.topLeft(),option.rect.size()/2);
QRect source2 = QRect(option.rect.topLeft(),option.rect.size()/2);

painter->drawLine(option.rect.topLeft(),option.rect.bottomRight());

source1.moveTopLeft(source1.topLeft() += QPoint(source1.size().width(),0));
painter->drawText(source1,"agent reagent");

source2.moveBottomLeft(source2.bottomLeft() += QPoint(0,source2.size().height()));
painter->drawText(source2,"hallide ion");
}

else
{
QStyledItemDelegate::paint(painter,option,index);
}
}

这段代码展示了主要思想,它不是最终版本,但你应该自己完成所有这些具体的事情。当然这种做法不是很容易,你可以直接创建图片并设置为单元格,但这样的话图片的可伸缩性就不好了。如果用户调整某些标题的大小,我的代码可以正常工作。为了证明这一点,请查看不同尺寸的屏幕截图。

enter image description here

enter image description here

关于c++ - Qt 表小部件。如何一起设置垂直标题和水平标题的含义/标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28729795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com