使用setStyleSheet怎么样才不影响vue 父子组件通信使用

【求助】使用setStyleSheet怎么样才不影响子组件【qt吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:34,764贴子:
【求助】使用setStyleSheet怎么样才不影响子组件收藏
使用了级联样式setStyleSheet(&border-image: url(:/image/serialport.png)&);结果子组件 都影响。 请问下,怎么写才不影响子组件。
达内qt培训,0基础120天+项目实战=两年工作经验达内qt培训 ,总监级讲师授课,7万家合作企业联合招聘,40万学员的选择
不使用QSS,写代码的方法。求教,谢谢。
结贴,搞定了。setStyleSheet(&.QWidget{border-image: url(:/image/serialport.png)}&);前面加个
就可以单独对需要处理的出来了。
登录百度帐号推荐应用5093人阅读
Qt/QML的实践积累(35)
Qt中设置按钮或QWidget的外观是,可以使用QT Style Sheets来进行设置,非常方便。
可以用setStyleSheet(&font: font-size:20 color: rgb(241, 70, 62); background-color: green&);来进行设置,其他的样式介绍如下:
font: 是否粗体显示
border-image:&&; 用来设定边框的背景图片。
border-radius:5 用来设定边框的弧度。可以设定圆角的按钮
border-width: 1px; 边框大小
font-family:&&; 来设定字体所属家族,
font-size:20 来设定字体大小
font-style:&&; 来设定字体样式
font-weight:20 来设定字体深浅
&background-color: 设置背景颜色
background: 设置背景为透明
color:rgb(241, 70, 62); 设置前景颜色
selection-color:rgb(241, 70, 62); 用来设定选中时候的颜色
可以使用border-top,border-right,border-bottom,border-left分别设定按钮的上下左右边框,
同样有border-left-color, border-left-style, border-left-width.等分别来设定他们的颜色,样式和宽度
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:55337次
积分:1110
积分:1110
排名:千里之外
原创:52篇
【公众号:三个程序员】 接收技术知识实时推送
技术方向:本人专注VC,Qt/QML语言开发。
研究平台包括Windows、Linux以及MacOSX相关技术的学习,
欢迎大家共同交流学习。
(1)(1)(3)(1)(1)(5)(10)(8)(1)(2)(2)(1)(1)(2)(1)(7)(2)(4)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'用户名:FinderCheng
文章数:123
评论数:1073
访问量:5515538
注册日期:
阅读量:1297
阅读量:3317
阅读量:461701
阅读量:1145978
51CTO推荐博文
好久没有来写文章了,由于家里面宽带断了,所以一直没能更新,今天现在写上一篇。
还是继续前面的内容。前面我们分三次把自定义model说完了,其实主要还是那三个实例。在 model/view 架构中,与model同等重要的就是 view。
我们知道,在经典的 MVC 模型中,view用于向用户展示 model 的数据。但是,Qt提供的不是 MVC 三层架构,而是一个 model/view 设计。这种设计并没有包含一个完整而独立的组件用于管理用户的交互。一般来说,view仅仅是用作对model数据的展示和对用户输入的处理,而不应该去做其他的工作。在这种结构中,为了获得对用户输入控制的灵活性,这种交互工作交给了delegate,也就是“委托”,去完成。简单来说,就像它们的名字一样,view 将用户输入委托给 delegate 处理,而自己不去处理这种输入。这些组件提供一种输入能力,并且能够在某些 view 中提供这种交互情形下的渲染,比如在 table 中通过双击单元格即可编辑内容等。对这种控制委托的标准接口被定义在 QAbstractItemDelegate 类中。
delegate 可以用于渲染内容,这是通过 paint() 和 sizeHint() 函数来完成的。但是,对于一些简单的基于组件的delegate,可以通过继承 QItemDelegate 或者 QStyledItemDelegate 来实现。这样就可以避免要完全重写 QAbstractItemDelegate 中所需要的所有函数。对于一些相对比较通用的函数,在这两个类中已经有了一个默认的实现。
Qt提供的标准组件使用 QItemDelegate 提供编辑功能的支持。这种默认的实现被用在 QListView,QTableView 和 QTreeView 之中。view 实用的delegate可以通过 itemDelegate() 函数获得。setItemDelegate() 函数则可以为一个标准组件设置自定义的 delegate。
Qt 4.4版本之后提供了两个可以被继承的delegate类:QItemDelegate 和 QStyledItemDelegate。默认的delegate是 QStyledItemDelegate。这两个类可以被相互替代,用于给view 组件提供绘制和编辑的功能。它们之间的主要区别在于,QStyledItemDelegate 使用当前的风格(style)去绘制组件。所以,在自定义delegate或者需要使用 Qt style sheets 时,建议使用 QStyledItemDelegate 作为父类。使用这两个类的代码通常是一样的,除了需要使用style进行绘制的部份。如果你希望为view item自定义绘制函数,最好实现一个自定义的style。这个你可以通过QStyle类来实现。
如果delegate没有支持为你的数据类型进行绘制,或者你希望自己绘制item,那么就可以继承 QStyledItemDelegate 类,并且重写 paint()&或者还需要重写 sizeHint() 函数。paint() 函数会被每一个item独立调用,而sizeHint()函数则可以定义每一个item 的大小。在重写 paint() 函数的时候,通常需要用 if 语句找到你需要进行渲染的数据类型并进行绘制,其他的数据类型需要调用父类的实现进行绘制。
一个自定义的delegate也可以直接提供一个编辑器,而不是使用内置的编辑器工厂(editor item factory)。如果你需要这种功能,那么需要实现一下几个函数:
createEditor(): 返回修改数据的组件;
setEditorData(): 为editor提供编辑的原始数据;
updateEditorGeometry(): 保证editor显示在 item view 的合适位置以及大小;
setModelData(): 根据editor 的数据更新model的数据。
好了,这就是一个自定义delegate的实现了。下面来看一个例子。
这是一个歌曲及其时间的例子。使用的是QTableWidget,一共有两列,第一列是歌曲名字,第二列是歌曲持续的时间。为了表示这个数据,我们建立一个Track类:
650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />#ifndef TRACK_H 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />#define TRACK_H 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />#include &QtCore& 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />class Track 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />{ 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />public: 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&Track(const QString &title = "", int duration = 0); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&QS 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&int 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />}; 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />#endif // TRACK_H
650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />#include "track.h" 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />Track::Track(const QString &title, int duration) 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&: title(title), duration(duration) 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />{ 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />}
这个类的构造函数没有做任何操作,只是把title和duration这两个参数通过构造函数初始化列表赋值给内部的成员变量。注意,现在这两个成员变量都是public的,在正式的程序中应该声明为private的才对。然后来看TrackDelegate类:
trackdelegate.h
650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />#ifndef TRACKDELEGATE_H 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />#define TRACKDELEGATE_H 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />#include &QtGui& 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />class TrackDelegate : public QStyledItemDelegate 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />{ 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&Q_OBJECT 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />public: 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&TrackDelegate(int durationColumn, QObject *parent = 0); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const; 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&void setEditorData(QWidget *editor, const QModelIndex &index) const; 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const; 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />private slots: 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&void commitAndCloseEditor(); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />private: 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&int durationC 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />}; 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />#endif // TRACKDELEGATE_H
trackdelegate.cpp
650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />#include "trackdelegate.h" 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />TrackDelegate::TrackDelegate(int durationColumn, QObject *parent) 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&: QStyledItemDelegate(parent) 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />{ 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&this-&durationColumn = durationC 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />} 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />void TrackDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />{ 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&if (index.column() == durationColumn) { 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&&&&&&&&&int secs = index.model()-&data(index, Qt::DisplayRole).toInt(); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&&&&&&&&&QString text = QString("%1:%2").arg(secs / 60, 2, 10, QChar('0')).arg(secs % 60, 2, 10, QChar('0')); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&&&&&&&&&QTextOption o(Qt::AlignRight | Qt::AlignVCenter); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&&&&&&&&&painter-&drawText(option.rect, text, o); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&} else { 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&&&&&&&&&QStyledItemDelegate::paint(painter, option, index); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&} 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />} 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />QWidget *TrackDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />{ 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&if (index.column() == durationColumn) { 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&&&&&&&&&QTimeEdit *timeEdit = new QTimeEdit(parent); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&&&&&&&&&timeEdit-&setDisplayFormat("mm:ss"); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&&&&&&&&&connect(timeEdit, SIGNAL(editingFinished()), this, SLOT(commitAndCloseEditor())); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&&&&&&&&&return timeE 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&} else { 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&&&&&&&&&return QStyledItemDelegate::createEditor(parent, option, index); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&} 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />} 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />void TrackDelegate::commitAndCloseEditor() 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />{ 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&QTimeEdit *editor = qobject_cast&QTimeEdit *&(sender()); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&emit commitData(editor); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&emit closeEditor(editor); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />} 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />void TrackDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />{ 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&if (index.column() == durationColumn) { 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&&&&&&&&&int secs = index.model()-&data(index, Qt::DisplayRole).toInt(); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&&&&&&&&&QTimeEdit *timeEdit = qobject_cast&QTimeEdit *&(editor); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&&&&&&&&&timeEdit-&setTime(QTime(0, secs / 60, secs % 60)); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&} else { 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&&&&&&&&&QStyledItemDelegate::setEditorData(editor, index); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&} 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />} 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />void TrackDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />{ 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&if (index.column() == durationColumn) { 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&&&&&&&&&QTimeEdit *timeEdit = qobject_cast&QTimeEdit *&(editor); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&&&&&&&&&QTime time = timeEdit-&time(); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&&&&&&&&&int secs = (time.minute() * 60) + time.second(); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&&&&&&&&&model-&setData(index, secs); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&} else { 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&&&&&&&&&QStyledItemDelegate::setModelData(editor, model, index); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&} 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />}
正如前面所说的,这个类继承了QStyledItemDelegate,覆盖了其中的四个函数。通过前面的讲解,我们已经了解到这些函数的作用。至于实现,我们前面也说过,需要通过QModelIndex选择我们需要进行渲染的列,然后剩下的数据类型仍然需要显式地调用父类的相应函数。由于我们在Track里面存储的是歌曲的秒数,所以在paint()里面需要用除法计算出分钟数,用%60计算秒数。其他的函数都比较清楚,请注意代码。
最后写一个使用的类:
trackeditor.h
650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />#ifndef TRACKEDITOR_H 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />#define TRACKEDITOR_H 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />#include &QtGui& 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />#include "track.h" 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />class TrackEditor : public QDialog 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />{ 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&Q_OBJECT 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />public: 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&TrackEditor(QList&Track& *tracks, QWidget *parent); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />private: 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&QList&Track& * 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&QTableWidget *tableW 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />}; 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />#endif // TRACKEDITOR_H
trackeditor.cpp
650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />#include "trackeditor.h" 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />#include "trackdelegate.h" 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />TrackEditor::TrackEditor(QList&Track& *tracks, QWidget *parent) 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&: QDialog(parent) 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />{ 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&this-&tracks = 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&tableWidget = new QTableWidget(tracks-&count(), 2); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&tableWidget-&setItemDelegate(new TrackDelegate(1)); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&tableWidget-&setHorizontalHeaderLabels(QStringList() && tr("Track") && tr("Duration")); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&for (int row = 0; row & tracks-&count(); ++row) { 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&&&&&&&&&Track track = tracks-&at(row); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&&&&&&&&&QTableWidgetItem *item0 = new QTableWidgetItem(track.title); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&&&&&&&&&tableWidget-&setItem(row, 0, item0); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&&&&&&&&&QTableWidgetItem *item1 = new QTableWidgetItem(QString::number(track.duration)); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&&&&&&&&&item1-&setTextAlignment(Qt::AlignRight); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&&&&&&&&&tableWidget-&setItem(row, 1, item1); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&} 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&QVBoxLayout *mainLayout = new QVBoxL 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&mainLayout-&addWidget(tableWidget); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&this-&setLayout(mainLayout); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />}
其实也并没有很大的不同,只是我们使用setItemDelegate()函数设置了一下delegate。然后写main()函数:
650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />#include &QtGui& 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />#include "trackeditor.h" 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" /> 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />int main(int argc, char *argv[]) 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />{ 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&QApplication a(argc, argv); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&QList&Track& 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&Track t1("Song 1", 200); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&Track t2("Song 2", 150); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&Track t3("Song 3", 120); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&Track t4("Song 4", 210); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&tracks && t1 && t2 && t3 && t4; 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&TrackEditor te(&tracks, NULL); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&te.show(); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />&&&&&&&&return a.exec(); 650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
align="top" src="http://devbean./images/editer/InBlock.gif" />}
好了,运行一下看看效果吧!
650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
border="0" alt="" src="/attachment/793375.png" />本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)
本文收录至博客专题:《》
10:12:07 16:51:43 15:20:22 12:26:33 10:39:49 09:51:04 10:58:35 23:40:22 12:58:08

我要回帖

更多关于 vue 父子组件通信使用 的文章

 

随机推荐