• 9379阅读
  • 6回复

【提问】请问如何在ListView一类的控件中显示格线 [复制链接]

上一主题 下一主题
离线marship
 
只看楼主 正序阅读 楼主  发表于: 2006-02-24
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
我在使用迅雷中,发现它的正在下载窗体中有各列和各行间有细线分隔,根据样子判断,应该是ListView,但是我在使用QListView和ListBox中都没有发现如何才能出现这些细线,唯一有细线的控件是QTableView,但QTableView在左侧有个行标头,看样子不象那个控件,请问使用过迅雷的朋友们,你能说出它那个在QT中是什么控件吗?谢谢!
[ 此贴被XChinux在2006-02-24 11:10重新编辑 ]
离线avatar_sky

只看该作者 6楼 发表于: 2010-06-01
回 3楼(tieliu) 的帖子
369464652我的QQ 真诚希望您能帮助我,我是大四的学生  正在做毕业设计 真的很需要您的指导!
离线avatar_sky

只看该作者 5楼 发表于: 2010-06-01
回 3楼(tieliu) 的帖子
大虾 帮个忙啊 初学qt 急需指导!!
实现效果,当我点选第一个单选按钮时 第一个combobox有效 第二个无效
离线marship
只看该作者 4楼 发表于: 2006-03-01
谢谢,画出来了,不过真的挺丑的,呵呵!
离线tieliu

只看该作者 3楼 发表于: 2006-02-27
楼主,的确像你所说的没有效果。
不过调换一下代码的调用顺序,把父类QListViewItem::paintCell( p, cg, column, width, align );的调用放在前面就可以了

另外,边框绘制,用drawRect也许不能达到最佳效果,你可以使用drawLine()方法
得到你想要得结果

派生出自己的MyListViewItem类,并重写其paintCell成员函数。

.h文件
class MyListViewItem : public QListViewItem
{
void paintCell( QPainter *p, const QColorGroup &cg, int column, int width, int align )
}
.cpp文件
void MyListViewItem::paintCell( QPainter *p, const QColorGroup &cg, int column, int width, int align )
{
QListViewItem::paintCell( p, cg, column, width, align );   //调用父类方法,实现实际文本或
                                        //者图标内容的绘制


p.save(); //保存qpainter设置

p.setBrush( Qt::NoBrush );   //设置填充背景颜色,此处设置为不填充背景
p.setPen( Qt::black );       //设置边框线颜色
p.drawRect( 0, 0, width, height() );   //绘制边框线

p.restore();   //恢复qpainter设置
}
离线marship
只看该作者 2楼 发表于: 2006-02-25
老大,我按你的方法试了,不行,还是没有边框线。保持原样。
离线tieliu

只看该作者 1楼 发表于: 2006-02-24
派生出自己的MyListViewItem类,并重写其paintCell成员函数。

.h文件
class MyListViewItem : public QListViewItem
{
void paintCell( QPainter *p, const QColorGroup &cg, int column, int width, int align )
}
.cpp文件
void PropertyItem::paintCell( QPainter *p, const QColorGroup &cg, int column, int width, int align )
{
  p.save(); //保存qpainter设置

  p.setBrush( Qt::NoBrush );   //设置填充背景颜色,此处设置为不填充背景
  p.setPen( Qt::black );         //设置边框线颜色
  p.drawRect( 0, 0, width, height() );   //绘制边框线

  QListViewItem::paintCell( p, cg, column, width, align );   //调用父类方法,实现实际文本或
                                                            //者图标内容的绘制

  p.restore();   //恢复qpainter设置
}
快速回复
限100 字节
 
上一个 下一个