QT的一些问题

1、如何在一个widget上面用图片作背景?
    首先用图片产生一个QPixmap对象,然后用QPixmap初始化一个QBrush,然后再用QBrush初始化QPalette,这样就可以用 QPixmap进行背景绘制了,但是,你仍然会碰到图片不能显示的问题。那是因为QT需要根据不同的系统,用不同的方式绘制图片,所以你需要指定 QStyle为某种方式,比如QMotifyStyle或者QWindowsStyle。

2、如何制作不规则的按钮?
  1)用下面的方式设置不规则按钮的事件响应区域
    pushButton.setMask( QPixmap(press_img_name).mask() )
  2)用下面的方式设置不规则按钮的风格为背景图,以及无边框.
    setStyleSheet( QString("QPushButton:pressed { background-image: url(").append(press_img_name).append("); border-style: flat; }"
                            " QPushButton:!pressed { background-image: url(").append(release_img_name).append("); border-style: flat; }") );
3、如何直接转出汉字
    在主函数中执行下面的方法,设置文字编码为UTF-8
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
    然后将要输出的utf8字串用tr()打包。
4、如何通过右上方的座标放置widget
    暂时,可以计算出矩形的大小,然后得到右上角座标
5、使用定时器实时更新内容,最简单的并行,轮询方式
QTimer *timer = new QTimer(this);
          connect(timer, SIGNAL(timeout()), this, SLOT(update()));
          timer->start(1000);
6、资源文件的生成
    通常用rcc -o output.rcc input.qrc生成的是cpp文件,该文件通过编译可以整合到应用程序中。
    但我们更多的时候并不希望资源资源文件被直接打包进入到系统中,所以应用下面的方式生成资源文件。
    rcc -binary -output.rcc input.qrc
    
    用下面的脚本可以生成qrc文件
    find $base_dir -name *.*g | awk 'BEGIN { print "<RCC>/n/t<qresource prefix=/"//" >" } { print "/t/t<file>"$1"</file>"} END{ print "/t</qresource>/n</RCC>"}' > $qrc_file

7、自定义右键菜单
      Qt中的部件的弹出菜单(ContextMenu),依据ContextMenuPolicy的值的不同,有四种形式:
    一、默认菜单
    此时,ContextMenuPolicy的值为Qt::DefaultContextMenu,这是默认值,其将显示部件定义的默认菜单
    二、无菜单
    此时,ContextMenuPolicy的值为Qt::NoContextMenu
    三、由Action定义菜单
    此时,ContextMenuPolicy的值为Qt::ActionsContextMenu,要为此部件定义这种菜单,很简单,只要把已经定义好的Action部件插入到要显示        此菜单的部件中,部件将自动按顺序显示菜单。
    QWidget::addAction(QAction *action);
    四、自定义菜单
    此时,ContextMenuPolicy的值为Qt::CustomContextMenu,这回,有两种方式来定义菜单,一种是响应
    customContextMenuRequested()这个signal,在响应的槽中显示菜单(QMenu的exec()方法)。第二种是需要从 这个部件的类中派生一个类,重        写contextMenuEvent()这个函数显示菜单(QMenu的exec()方法显示)。
8、处理QLabel的点击事件
    将QLabel的parent指定为可以处理clicked()事件的组件,比如QPushButton,然后在QPushButton中就可以捕获到该事件,并处理。
9、在QT组件中加入自定义的数据
    setData()以及setProperty()是最方便的方式。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值