Qt Table小部件。如何同时设置垂直标题和水平标题的含义/标题?

豪尔赫·C

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

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

我没有找到有关如何在红色周围进行操作的任何信息。我开始相信QTableWidget无法做到这一点。

谢谢 ;)

科索万

我认为使用标准标头(QHeaderView)是不可能的,因为

注意:每个标头都会为每个部分本身呈现数据,并且不依赖委托。结果,调用标头的setItemDelegate()函数将无效。

因此,您需要忘记它并禁用它,应该实现自己的标题(设置颜色,文本等),但是我当然会帮助您理解含义/标题。我通过下一个项目代表实现了这一目标:

。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);
    } 
}

这段代码显示了主要思想,它不是最终版本,但是您应该自己完成所有这些具体操作。当然,这种方法不是很容易,您可以仅创建图片并将其设置为单元格,但是在这种情况下,图片将无法很好地扩展。如果用户将调整某些标头的大小,我的代码将正常工作。为了证明这一点,请参见不同大小的屏幕截图。

在此处输入图片说明

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Qt中更改窗口标题和中央小部件?

来自分类Dev

如何从Qt上的标题(水平/垂直)QTableWidget更改背景颜色?

来自分类Dev

在Qt中跨越水平标题

来自分类Dev

如何水平停靠Qt小部件?

来自分类Dev

Qt:如何在QAbstractItemModel中的子表上设置标题?

来自分类Dev

找不到Qt(标题和库)

来自分类Dev

找不到Qt(标题和库)

来自分类Dev

Qt删除标题栏

来自分类Dev

如何使用Qt Creator的设计器水平对齐小部件

来自分类Dev

父母Qt小部件

来自分类Dev

交换Qt小部件

来自分类Dev

标记Qt小部件

来自分类Dev

标记Qt小部件

来自分类Dev

如何在Qt中使用彩色字符串设置窗口标题?

来自分类Dev

如何在Qt小部件中设置文本格式

来自分类Dev

如何在Qt Creator中更改窗口标题?

来自分类Dev

如何在QT中创建可拖动的(无边界和无标题)顶级窗口

来自分类Dev

Qt 5.3 QTreeView可点击标题数据

来自分类Dev

Qt 5.3 QTreeView可点击标题数据

来自分类Dev

Yii2如何为小部件ListView设置标题

来自分类Dev

QT:如何在不覆盖小部件类的情况下为小部件设置 resizeEvent

来自分类Dev

从标题textview小部件设置文本

来自分类Dev

设置 wordpress 小部件标题的样式

来自分类Dev

如何获取Qt小部件类型

来自分类Dev

Qt:如何检测是否选择了小部件?

来自分类Dev

Qt:如何访问继承的小部件?

来自分类Dev

QT清除小部件内容

来自分类Dev

Qt“直通”或“容器”小部件

来自分类Dev

从Qt Designer调用小部件