1. 程式人生 > >QT 自己畫單元格 QStyledItemDelegate

QT 自己畫單元格 QStyledItemDelegate

1.建立繼承QStyledItemDelegate的類。

ScreenTreeWidgetItemDelegate::ScreenTreeWidgetItemDelegate(ScreenTreeWidget *parent):
    QStyledItemDelegate(parent),
    m_handler(parent)
{


}

2. 在建立的 類中實現paint函式,所有單元格的畫的內容都在paint函式裡來畫

void ScreenTreeWidgetItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
    if(!index.data(Qt::UserRole).toBool())
        return;

    QRect rect = option.rect;
    rect.setHeight(rect.height()-1);
    painter->fillRect(rect, QColor(39,44,60));

    painter->setPen(Qt::white);
    QTextOption op;
    op.setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);


    painter->drawText(option.rect, index.data(Qt::DisplayRole).toString(), op);

    QRect iconRect(10,option.rect.y()+(option.rect.height()-16)/2,16,16);
    if(m_handler->isExpanded(index))
    {
        if(option.state & QStyle::State_MouseOver)
        {
            QImage img(":/image/open_hover");
            painter->drawImage(iconRect, img, img.rect());
        }
        else
        {
            QImage img(":/image/open");
            painter->drawImage(iconRect, img, img.rect());
        }

    }
    else
    {
        if(option.state & QStyle::State_MouseOver)
        {
            QImage img(":/image/close_hover");
            painter->drawImage(iconRect, img, img.rect());
        }
        else
        {
            QImage img(":/image/close");
            painter->drawImage(iconRect, img, img.rect());
        }

    }

}

3.使用,在使用類中設定

setItemDelegate(new ScreenTreeWidgetItemDelegate(this));

相關推薦

QT 自己單元 QStyledItemDelegate

1.建立繼承QStyledItemDelegate的類。ScreenTreeWidgetItemDelegate::ScreenTreeWidgetItemDelegate(ScreenTreeWidg

Qt中向單元中寫入日期資料

第一種,用QAxObject來實現,主要用單元格的屬性NumberFormatLocal,程式碼如下 QAxObject excel("Excel.Application"); excel.setProperty("Visible", false); QAxObject

C# DataGridView單元斜線

功能要求:不符合條件的單元格使用斜線形式表現出來。 1、定義兩個變數,一個是儲存單元格位置的陣列,一個是Graphics 變數 Graphics gdi; List<DataGridViewCell> pathList = new List<DataGridViewCell&

Qt Model/View view單元值改變其相應的背景顏色也變

只需要在 Model類中的 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; 方法中進行判斷 設定顏色 if (Qt::BackgroundColorRole == role)

QT QTableView用法小結(設定單元字型顏色,文字字型...)

這幾天在公司做關於衰減開關的上位機,用到很多表格,其中表格基本上都是用QTableView進行編寫。為了防止以後忘記,同時也給後續的同學一點學習建議,特此寫下這篇部落格。 QTableView常用於實現資料的表格顯示。下面我們如何按步驟實現學生資訊表格:一 新增表頭

NPOI操作Excel,NPOI較複雜表格和設定其單元格式

        在最近的專案中,又使用了NPOI把資料匯出到Excel,發現新版的使用方法和舊版的還是有些區別,而且貌似新版NPOI功能更強大了,在這個專案裡面,主要遇到了兩個問題,最後成功解決了,那麼下面的也就是列出了部分程式碼,程式碼中列出瞭如何解決如下問題:     

QT MVC 中合併單元處理

QT中使用QTableView/QTableModel時合併單元格的處理 擴充套件 QTableModel/QAbstractItemModel 在單元格屬性中儲存合併資訊,我使用Qt::UserRole屬性,使用QPoint儲存合併的範圍。 擴充套件 QTableView

Qt實現表格控制元件-支援多級列表頭、多級行表頭、單元合併、字型設定等

目錄 一、概述 二、效果展示 三、定製表頭 1、重寫資料來源 2、重寫QHeaderView 四、設定屬性 五、相關文章

Qt高仿Excel表格元件-支援凍結列、凍結行、內容自適應和合並單元

目錄 一、概述 二、效果展示 三、實現思路 1、凍結行、凍結列 2、行高自適應 3、螞蟻線 四、測試程式碼 1、新增表格資料

gridControl單元的值隨另一個單元值的改變而改變

pre try () 改變 ssa txt 重要 expr 另一個 private void grvDetail_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedE

DataGridView使用技巧十:單元表示值的自定義

mes rgs bject 設定 format ebo cep send || 通過CellFormatting事件,可以自定義單元格的表示值。(比如:值為Error的時候,單元格被設定為紅色) 示例: 1 private void dgv_Users_CellForm

POI對Excel單元進行顏色設置

dex .so nbsp set exceptio except www span 單元格 POI對Excel單元格進行顏色設置 學習了:http://www.myexception.cn/program/1932587.html HSSFWorkbook workboo

NPOI之Excel——合並單元、設置樣式、輸入公式

images post nbsp size 字體 進行 分享 blog code NPOI之Excel——合並單元格、設置樣式、輸入公式 首先建立一個空白的工作簿用作測試,並在其中建立空白工作表,在表中建立空白行,在行中建立單元格,並填入內容:   //建立空白工

UIView加入手勢 然後UITableView 加入進這個View 導致UITableView 的單元點擊事件無效

wce 解決 objc ace seq ins dispose log fse #import "ViewController.h" @interface ViewController ()<UITableViewDataSource,UITableViewD

POI以SAX方式解析Excel2007大文件(包含空單元的處理) Java生成CSV文件實例詳解

arraylist api csdn false gif pac apache all top http://blog.csdn.net/l081307114/article/details/46009015 http://www.cnblogs.com/dreammyl

【原創】datagridview動態綁定contextmenustrip,並復制單元數據

event args oar cells ren .get add cell ntc public class DGVCopy { public DataGridView DataGridViewCopy { get; set; }

在EXCEL中如何讓一列數字變成文本格式?就是想讓單元的左上角變一個綠綠的?

excel image 一個 splay wid 宋體 文本格式 margin -1 如何在EXCEL中如何讓一列數字變成文本格式?就是想讓單元格的左上角變一個綠綠的? 解決方案:將整列單元格格式設為文本,然後,選中該列,數據--分列--完成 詳細步驟: (1)選中1行或者

Ext grid中單元編輯,editor為combobox時用法

.com clas ont con reat back trap hang style { header: ‘TO_PTN_NM‘, dataIndex: "TO_PTN_NM", sortable: true, rend

Extjs grid 單元編輯

code col null checkbox creat true 單元格編輯 source tex 實現grid勾選後出現編輯按鈕,通過增加一個字段checked來控制 事件如下: selectionchange: function (thi, sel

Datatables js 復雜表頭 合並單元

after spa llb mat target font com sco datatable x →Datatables官網← x 項目中用到的Table都是用Datatables插件來搞得; 以前都是生成一般性的table; 近期要生成一些復雜表頭,合並單元格之類的;