• 8505阅读
  • 11回复

QTableView编辑单元格时的问题 [复制链接]

上一主题 下一主题
离线花布鱼
 
只看楼主 正序阅读 楼主  发表于: 2011-09-09

使用QTableView和QStandardItemModel创建了表格,
双击编辑单元格时单元格内容变成如下图的的样式:



问题: 如何让底层白色的123不显示啊?
离线花布鱼
只看该作者 11楼 发表于: 2011-09-15
回 11楼(wxj120bw) 的帖子
已经找到原因了

感谢高手大大的帮助

原因:
表格控件的父窗口的style sheet中
background: transparent造成的

注释掉或者设置stylesheet时全部指定objectname就可以了

我的理解:
Qt TabelView中编辑单元格时本身就是在该单元格处创建一个QLineEdit
设置父窗口的background:transparent后 子控件QLineEdit的背景也延用父窗口的
所以就导致了此问题

离线wxj120bw

只看该作者 10楼 发表于: 2011-09-15
回 10楼(花布鱼) 的帖子
方便的法 把源代码发过来
离线花布鱼
只看该作者 9楼 发表于: 2011-09-15
回 8楼(wxj120bw) 的帖子
好像不是这个的问题,
把GridModel::data注释掉之后问题还是存在呢
离线花布鱼
只看该作者 8楼 发表于: 2011-09-14
回 6楼(jdwx) 的帖子
style sheet简单...
setPalette效果做不出理想效果...
离线wxj120bw

只看该作者 7楼 发表于: 2011-09-14
回 7楼(花布鱼) 的帖子
问题就出在你的GridModel::data函数里 看下例子自定义model
离线花布鱼
只看该作者 6楼 发表于: 2011-09-14
回 5楼(wxj120bw) 的帖子
style sheet的内容如下:
  1. QTableView{
  2.     background-color: transparent;
  3.     border: 3px solid #ff9900;
  4.     border-radius: 10px;
  5.     gridline-color: #ff9900;
  6.     selection-background-color: rgb(51,102,204,20%);
  7.     selection-color: #ffffff;
  8.     font: bold 25px;
  9.     text-align: center;
  10. }
  11. QTableView QHeaderView::section  
  12. {
  13.     border: 1px solid #ff9900;
  14.     background-color: transparent;
  15.     height: 30px;
  16.     width: 100px;
  17.     font: bold 24px;
  18. }


自定义model(public QStandardItemModel)中data进行了重写 重写内容如下:
  1. QVariant GridModel::data(const QModelIndex &index, int role) const
  2. {
  3.     QVariant value = QStandardItemModel::data(index, role);                                            
  4.     if (role == Qt::TextAlignmentRole)
  5.     {
  6.         value = m_cellAlign;                            // 居中显示
  7.     } else if (role == Qt::TextColorRole )
  8.     {
  9.      if ( 1 == index.row() )
  10.            value = QColor(255,0,0);
  11.      else if ( 3 == index.row() )
  12.            value = QColor(51,255,0);
  13.      else
  14.           value = QColor(0,255,255);
  15.     }
  16.     return value;
  17. }


没有其他的设置了


离线jdwx

只看该作者 5楼 发表于: 2011-09-14
回 4楼(花布鱼) 的帖子
style sheet用着方便,效率低,还影响子控件。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线wxj120bw

只看该作者 4楼 发表于: 2011-09-13
回 4楼(花布鱼) 的帖子
没编辑之前,"123"应该在中间显示吧。还有style sheet方便 可以贴出来 看看
还有你的代码里有没有操作Qt::DisplayRole这样的值
离线花布鱼
只看该作者 3楼 发表于: 2011-09-13
回 3楼(wxj120bw) 的帖子
单元格的内容是"123"

没有子类化QPalette

不过设置了style sheet
离线wxj120bw

只看该作者 2楼 发表于: 2011-09-10
回 楼主(花布鱼) 的帖子
想问下 这个单元格的内容是“123” 还是“123 123”
还有你子类化QPalette吗
离线花布鱼
只看该作者 1楼 发表于: 2011-09-09
各路走过路过的大仙大大们啊

帮帮忙啊
快速回复
限100 字节
 
上一个 下一个