Action->setIcon(QIcon("../image/1.png"))//图片路劲
QAction::QAction ( const QIcon &icon, const QString &text, QObject *parent )
直接这样用也行
使用 Qt::WindowFlags 可以实现一些不同类型的窗口,如:用 Qt::FramelessWindowHint 来实现无边框窗口,用 Qt::Popup 来实现d出式的窗口,用 Qt::Tool 来实现工具窗口,用Qt::CustomizeWindowHint 来关闭窗口标题栏以及与 Qt::WindowCloseButton(添加关闭按钮),Qt::WindowMaximumButtonSize(添加最大化按钮)联用来建立只有关闭按钮和最大化按钮的窗口,用 Qt::WindowStaysOnTopHint 使窗口永远在最前端等。 Qt::WidgetAttribute 使窗口支持透明背景以及在关闭后主动销毁。其它一些常用的 Attribute 有:Qt::WA_AcceptDrops 使 widget 支持拖拽 *** 作,Qt::WA_MouseTracking 使 widget 及时响应鼠标移动事件(MouseMoveEvent)。 Qt::setMask() 函数对窗口进行部分区域遮掩来实现各种形状的窗口。部分代码解释:头文件: 1:#ifndef SHAPEDWIDGET_H 2:#define SHAPEDWIDGET_H 3: 4:#include <QWidget>5:class QPoint6:class QPixmap7:class ShapedWidget : public QWidget 8: { 9: Q_OBJECT 10:public: 11:explicit ShapedWidget(QWidget *parent = 0)12: ~ShapedWidget()13: 14:private slots: 15:void changeSkin()16: 17:protected: 18:void mousePressEvent(QMouseEvent *)19:void mouseMoveEvent(QMouseEvent *)20:void paintEvent(QPaintEvent *)21: 22:private: 23:void initData()24:void initVisualComponents()25:void setupContextMenu()26: 27: QPoint* dragPos_28: QPixmap* backgroundPixmap_29: }30: 31:#endif // SHAPEDWIDGET_H构造: 1: ShapedWidget::ShapedWidget(QWidget *parent) : 2: QWidget(parent, Qt::FramelessWindowHint) //无边框窗体 3: { 4: initData()//初始化数据,这个demo里面就两个,具体下面有解释 5: initVisualComponents()//初始化私有可视部件,这个demo里面没有私有的其它部件,所以只做了窗口的一些属性设置 6: setupContextMenu()//设置右键菜单,分配各种QAction内存空间以及连接SIGNALS和SLOTS 7: setAttribute(Qt::WA_DeleteOnClose)//关闭事件发生后就主动从内存中销毁窗口 8: setAttribute(Qt::WA_TranslucentBackground)//透明背景支持 9: } 拖拽移动窗体(下面有图示): 1:void ShapedWidget::mousePressEvent(QMouseEvent *event) 2: { 3:if(event->button() == Qt::LeftButton) 4: { 5: *dragPos_ = event->globalPos() - frameGeometry().topLeft()6: event->accept()7: } 8: } 9: 10:void ShapedWidget::mouseMoveEvent(QMouseEvent *event) 11: { 12:if(event->buttons() &Qt::LeftButton) 13: { 14: move(event->globalPos() - *dragPos_)15: event->accept()16: } 17: } 窗口绘制: 1:void ShapedWidget::paintEvent(QPaintEvent *) 2: { 3: QPainter painter(this)4: painter.fillRect(0, 0, backgroundPixmap_->width(), backgroundPixmap_->height(), *backgroundPixmap_)5: } 更换皮肤: 1:void ShapedWidget::changeSkin() 2: { 3: QAction* source = qobject_cast<QAction*>(sender())//获取发送该信号的信号源,并转换对象 4: backgroundPixmap_->load(source->data().toString())//因为给每个 QAction 赋了图片的地址的字符串 5://所以可以通过 data() 来获取该值,并更新背景图片的内容 6: resize(backgroundPixmap_->width(), backgroundPixmap_->height())//窗口大小尽可能小欢迎分享,转载请注明来源:内存溢出
评论列表(0条)