QTableWidget单元格内容的显示
我想将表里的特定单元格的字符串翻转90度显示,如┯变为┝。
有类似的问在QWidget上实现字符旋转,可以用QPainter重绘来实现。我想用QPainter来实现,但一直没成功,我想原因应该是:QTableWidgetItem不属于QWIdget,所以没法用QPainter来实现。
请各位指点一下。
[解决办法]
我拼了一段测试代码出来,效果是把字旋转了,你看看是不是你需要的
class TableDelegete:public QStyledItemDelegate{public: virtual void paint (QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const{ QStyleOptionViewItem opt = option; float m11,m12,m13,m21,m22,m23,m31,m32,m33; m13 = 0.f; m23 = 0.f; m33 = 1.f; m11 = 0.f; m21 = 1.f; m31 = 0.f; m12 = 1.f; m22 = 0.f; m32 = 0.f; QTransform trans; trans.setMatrix(m11,m12,m13,m21,m22,m23,m31,m32,m33); painter->setTransform(trans,false); QStyledItemDelegate::paint(painter, opt, index); } virtual QSize sizeHint (const QStyleOptionViewItem& option, const QModelIndex & index ) const{ (void)index; QStyleOptionViewItem opt = option; return QSize(40,40); }};MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); m_pTable = new QTableWidget(this); m_pTable->setColumnCount(1); m_pTable->setRowCount(1); m_pTable->setColumnWidth(0,40); m_pTable->setRowHeight(0,40); QTableWidgetItem* item = new QTableWidgetItem(QString("1")); m_pTable->setItem(0,0,item); TableDelegete* dele = new TableDelegete(); m_pTable->setItemDelegate(dele); m_pTable->setFixedSize(100,100);}