読み込んでいます...

我相信很多人都很头疼C++的界面布局,曾经有一个“高人”和我说过现在谁用C++做界面啊,但是C++的高效确实是可以看见的,如果你做了很多的C#的应用程序,我相信肯定会发现C#的应用程序做界面是相当好做的,特别是有了破解版的RibbonUI之后(Office2007风格),C#的界面就更好做了。很可惜的是,我个人认为C#去做UI的时候会有点头疼,因为对我来说拖影和有点卡卡的感觉是绝对不允许的,而C#的GDI+的性能也一般,所以我觉得有时候高性能的UI,还是可以尝试其他的语言来做,比如脚本语言,比如C++。

最近无聊学习看Qt,Qt的界面制作是非常简单的,2年前看Qt的时候,没有发现做界面有那么大的优势,现在看来,还是有不错的优势的。下面是用C++做的界面,很简单,很容易,但是有一定的指导意义。

注意:这里我只是拿嘀咕作为界面,并不是嘀咕的应用程序,所以千万不要和嘀咕相比了。

我们在设计这个窗体的时候,可以使用3种方法,这三种可以归纳一下如下:

1.直接在设计器里面绘制窗体,但是要有点技巧。

2.在代码里面手动绘制窗体,同样需要技巧。

3.使用绘图的方式去绘制窗体,复杂,难定位。

其实第一种方法和第二种方法没什么太大区别,就首先说第一,第二种方法吧。在设计器里面去设计的时候,会比较容易,但是技巧就在于,我们必须要使用一个label控件作为背景,然后label控件的大小和窗体的大小一致,这样就假装有了一个背景层。至于为什么不好在背景直接设计颜色和图片,因为背景的颜色和图片会影响所在层内的控件的颜色,比如北京为黑色,那么文本框就有可能会为灰色,这是让人很郁闷的一件事,所以我们要用label作为一个背景层。

不过这里值得一提的是,我们在使用背景的时候,要在项目中添加一个资源文件的项目,即文件名为qrc为后缀的文件。

添加了资源文件之后,我们就可以在资源文件中添加我们需要的资源,例如下图。

我们可以创建一个Prefix,可以当作是一个根路径一样的东西。然后可以在响应的Prefix里面去添加文件,例如上图中我就有一个image的Prefix,里面有一个images/bg.png。这里就是我们资源文件的路径了,我们可以通过下面的代码访问。

//访问路径":/image/images/bg.png);"
paintLabel->setStyleSheet("background-image: url(:/image/images/bg.png);");

这样就添加了背景图片并通过代码去设置了。在设计器中,你也可以直接在设计器里面修改stylesheet属性去修改背景。不过,可以从上面的代码看出来,我们给Qt应用程序做界面是多么容易的一件事情,就像CSS和HTML一样,没错,确实可以像CSS的思考方式去做界面了。我们可以在设计器中修改stylesheet属性,就可以看到下面的窗口。

我们可以添加资源,添加渐变和添加颜色,并添加字体,都可以,我们可以直接选取上面的颜色,渐变效果,渐变颜色和字体来更改响应的窗体中的字体,这样就非常简单的就能够制作出相应的窗体了,例如如果你想做一种深黑色的非常漂亮的窗体的话,直接修改stylesheet(样式表)就能够修改窗体的效果了,就非常容易。从代码来说,stylesheet也可以直接修改,接受QString参数,也就是字符串了,直接把stylesheet写进去就可以了。

这里说一下用绘制的方法写背景,我用绘制的方式绘制过图片,不过有点复杂,在代码上不会特别复杂,因为Qt直接有绘图的功能,如果你还想更丰富一点,还可以用OpenGL,不过那是后话了。但是绘图方面有很多要考虑的地方,例如坐标等等,如果只需要简单的UI设计,使用样式表就能够很快的达到我们的效果和目的了。但如果还要有更炫的效果,绘制的方法虽然麻烦,但也是优点多多的。

635路过 5评论 QT 阅读全文..
  1. 生活笔谈 @

    期待哪一天你开发的东西正好是我所常用的~~哈哈~加油!顶你~

  2. 诡异的西红柿 @

    @阿祠
    怎么火兔还能用?

  3. 阿祠 @

    @soundbbg
    曲线救国,有的玩就可以了

  4. 诡异的西红柿 @

    @阿祠
    可惜那个太丑了!

:-D :-? 8) :cry: 8-O :lol: :-x :-| :?: :-P :oops: :roll: :( :) :-o :wink: more »