QT编程学习笔记

 

前些时间,学过近1000行左右的qt代码,基本上属于现学现写, 个人也总结了这方面的笔记,大多数的资料总结查询来自网络。

 

 

一 如何添加自定义的slot 函数。

以添加recordOnRadioButtonClickedHandle函数为例。

1 头文件里定义recordOnRadioButtonClickedHandle函数,并在.cpp 文件里实现函数主体内容。

setuppage.h

public slots:

void recordOnRadioButtonClickedHandle();

 

setuppage.cpp

void SetupPage::recordOnRadioButtonClickedHandle()

{

printf("recordOnRadioButtonClickedHandle handle!/n");

return;

2 与信号连接。

connect(recordOnRadioButton,SIGNAL(clicked()),this,SLOT(recordOnRadioButtonClickedHandle()));

 

3 对文件里添加

Q_OBJECT

4 重新生成makefile 

 

 

 

二 Qt 中如何使用外部链接库

在.pro 文件使用情况如下所示。

LIBS=./cores/libcores.a

如何将qte 默认的绿色背景设置为透明

Qte 启动时会将背色设置为绿色背色, 这个颜色实在是太恶心了, 现需要OSD层与视频层叠加显示,需要设置背色绿色为透明。我的实现方法如下

1 设置framerbuffer,定义TRANSPARENT_COLOR颜色不显示。

 

        stColorKey.bKeyEnable = HI_TRUE;

        stColorKey.u32Key = TRANSPARENT_COLOR;

        stColorKey.bMaskEnable = HI_FALSE;

        stColorKey.u8BlueMask = 255;

        stColorKey.u8RedMask = 255;

        stColorKey.u8GreenMask = 255;

 

        if (ioctl(m_Fb.FrameBufferFd, FBIOPUT_COLORKEY_HIFB, &stColorKey) < 0)

        {

            return -OEC_HARDWAREERROR;

        } 

注:TRANSPARENT_COLOR 颜色的RGB值分别为255,0,0

 

三 设置QT的背景色为TRANSPARENT_COLOR

 

QBrush *BackColor = new QBrush(QColor(255,0,0)); //设置背景颜色

QWSServer::setBackground(*BackColor); //应用背景颜色

 

四 布局的时候设置左,上,右,下的距离

我用红字圈不来的那哥们的回答确实很有用。还有vlolv那哥们的回答很准确的解释了我的疑问。也是,你既然要设定坐标为什么还让QT去layout,明摆了没事找事么。

jwvwv的两个方法我只试了setContentsMargins,发现其实很管用,查看文档,

void QWidget::setContentsMargins ( int left, int top, int right, int bottom )

Sets the margins around the contents of the widget to have the sizes left, top, right, and bottom. The margins are used by the layout system, and may be used by subclasses to specify the area to draw in (e.g. excluding the frame).

Changing the margins will trigger a resizeEvent().

噢,原来就是布局的时候设置实际的距离左,上,右,下的距离,这样其实就基本实现了我的要求。我设置坐标其实不是死的,只是想让他距离上边框有一定的距离。

 

五 如何加载图片

有两种方法,一种是加载直接路径

1 加载图片的直接路径,例如图片在当前文件夹下的image目录下。

image.load("./images/mainwindow_background.png");

 

2 加载图片的相对路径

image.load(":./images/mainwindow_background.png");

当以此种形式加载图片时,图片的路径也是要在qrc文件里进行定义的。

images/mainwindow_background.png

这样意义统一更改图片的路径, 当切换主题的时候只用切换qrc文件便可。

 

六 在Qt4中如何为对话框设置背景?

 

答:这个问题值得总结一下。大致有以下的思路和方法:

 

1.重写paintEvent()事件

 

在该事件中用画笔QPainter重画整个背景。该方法比较复杂,不建议初学者采用。

 

2.使用调色板类QPalette

 

//以下代码中pWidget为指向要设置的widget的指针。   

QPalette palette = pWidget->palette();   

palette->setBrush(QPalette::Active,QPalette::Window,QBrush(Qt::red));   

pWidget->setPalette(palette);  

pWidget->setAutoBackground(true);   

 

推荐使用这种方法,大家可以查看一下setBrush()方法的定义:

 

  Palette::setBrush ( ColorGroup group, ColorRole role, const QBrush & brush )  

 这个是一个重载版本,最为重要的是第二个参数,可以设置许多不同的类型。举例来说, 如果pWidget指向的是一个QListWidget或者QTextEdit对象,如果把第二个参数设置成QPalette::Text,则是设置其中文字的颜色;如果第二个参数是QPalette::BrightText,则是设置该对象被选中时,其文字的颜色;如果第二个参数QPalette::Bright则表示设置选中该对象时,高亮背景的颜色或者图片。该函数的功能是很强大的。

 

3.使用样式表。

 

  pWidget->setStyleSheet("background-color:blue;"); //设置背景颜色   

pWidget->setStyleSheet("background-image:url(:/folder/show.bmp);"); //设置背景图片此外,还有一些很有意思的方法,比如用setHtml(),insetHtml()这种用HTML语言的方式来指定的等等,大家可以多查查帮助文档搜索一下。

 

4.具体例子

 

  //设置为固定颜色 QPalette pal = pWidget->palette();   

pal.setColor(QPalette::Background, QColor(0,0,0)); //黑色   

pWidget->setPalette( pal ); //背景图片   

QPalette pal = pWidget->palette();   

pal.setBrush( QPixmap(图片文件名) ); //黑色   

pWidget->setPalette( pal );

 

 

你可能感兴趣的:(QT编程学习笔记)