A. qt编程问题
1、关联Qt库。如果是分别安装的Qt Creator和Qt库,而不是安装集成Qt Creator和Qt库的SDK,则需要手动关联Qt库。打开工具→选项菜单,然后选择“构建和运行”一项,再进入Qt版本选项卡。点击右上角的“添加”按钮,然后会让选择qmake.exe文件,我们在Qt(不是Qt Creator)安装目录的bin目录中找到该文件并打开。现在已经默认生成了版本信息,我们点击确定按钮即可。
2、关联MinGW。在安装Qt 4.8.6及以后的Qt 4版本时,应该按照安装时的提示来下载相应版本的MinGW,不然编译程序无法运行。如果是Qt4版本,需要使用GCC 4.4,也就是MinGW需要是4.4版本的,其他新的版本均不可用。在Qt 4.8版本,需要下载并指定GDB才能正常调试。下载完MinGW和GDB以后,将其解压到Qt的安装目录中,比如这里都解压到了C:Qt目录中。打开工具→选项菜单,然后选择“构建和运行”一项,再进入工具链选项卡。点击右上角的“添加”按钮,然后会让选择mingw32-g++.exe文件,我们在MinGW安装目录的bin目录中找到该文件并打开。关联GDB则进入调试器选项卡添加GDB相关exe文件。
如果安装的是集成开发包QtSDK,则不需要手动关联Qt库、MinGW和GDB,由Qt自动关联。
注意:Qt5以后版本默认也包含了所有需要的工具,不存在这里的情况,直接下载安装即可使用!
3、在创建桌面版项目时,最好选中“使用影子构建”,这样编译生成的文件会和源码分别存放,如下图所示。编译完成后会发现多了一个helloworld-build-desktop-Qt_4_8_1__4_8_1____目录,里面存放的就是编译生成的文件。这就是前面创建项目讲到的 “使用影子构建” ,如果没有选中这个,那么生成的文件就会和源码在同一个目录里。
13、状态信息可以被分为三类:临时信息,如一般的statusTip提示信息,上面讲到的动作提示就是临时信息;正常信息,如显示页数和行号;永久信息,如显示版本号或者日期。可以使用showMessage()函数来显示一个临时消息,它会出现在状态栏的最左边。一般用statusBar->addWidget()函数添加一个QLabel到状态栏上用于显示正常信息,它会生成到状态栏的最左边,可能会被临时消息所掩盖。如果要显示永久信息,要使用statusBar->addPermanentWidget()函数来添加一个如QLabel一样的可以显示信息的部件,它会生成在状态栏的最右端,不会被临时消息所掩盖。
14、关于随机数,在Qt中是使用qrand()和qsrand()两个函数实现的。在使用qrand()函数产生随机数之前,一般要使用qsrand()函数为其设置初值,如果不设置初值,那么每次运行程序,qrand()都会产生相同的一组随机数。为了每次运行程序时,都可以产生不同的随机数,我们要使用qsrand()设置一个不同的初值。
B. 关于Qt界面的设计(界面衔接)一般做法
给你方向不具体告诉你,给分不?不知道了,好吧,还是稍微介绍一点,然后大胆鼓励你自己领悟!
解救方法是这个类:QSingalMapper,看名字能想到什么?没错,这个类将同一个信号封装后,改造成不同的信号,然后再发射。
asssiant里面有个例子:
ButtonWidget::ButtonWidget(QStringList texts, QWidget *parent)
: QWidget(parent)
{
signalMapper = new QSignalMapper(this);
QGridLayout *gridLayout = new QGridLayout;
for (int i = 0; i < texts.size(); ++i) {
QPushButton *button = new QPushButton(texts[i]);
connect(button, SIGNAL(clicked()), signalMapper, SLOT(map()));
signalMapper->setMapping(button, texts[i]);
gridLayout->addWidget(button, i / 3, i % 3);
}
connect(signalMapper, SIGNAL(mapped(const QString &)),
this, SIGNAL(clicked(const QString &)));
setLayout(gridLayout);
}
看见这个函数了么?每个button都发送clicked信号,但是使用这个类以后就把相同的信号给封装成不同信号发射了。注意那个connect函数里面的mapped信号的QString参数,不同的button的clicked信号是相同的,但是text是不同的,这样相同的信号就能区分出不同的需求了。
画龙点睛到此,不必细细去说,相信你该知道怎么办了。不知道还可以问我。
C. ubuntu怎么安装qtsvg
下面就是需要作的几个步骤
1)sudo apt-get install libqt4-dev
安装完这个包后,你就可以写Qt程序了。libqt4-dev会自动把下面相关的一些qt4包安装上,例如:
libqt4-assistant
libqt4-dbus libqt4-designer libqt4-help libqt4-network libqt4-opengl
libqt4-opengl-dev libqt4-qt3support libqt4-script libqt4-scripttools
libqt4-sql libqt4-sql-mysql libqt4-svg libqt4-test libqt4-webkit
libqt4-xml libqt4-xmlpatterns libqtcore4 libqtgui4
sudo apt-get install g++ automake
这俩个包并不属于qt包,但是编译Qt的c++编译器需要安装,在 g++包里。Qt有自己的编译系统,automake并不是必须的,但有时候需要编译一些第三方的库,所以一般推荐安装上。
3) sudo apt-get install qt4-dev-tools qt4-designer qt4-doc
qt4- dev-tools包含了一些开发用到辅助工具,如帮助系统工具assitant,翻译辅助工具linguist,d-bus查看器,Pixel Tool等。
qt4-designer则会安装GUI设计工具designer
qt4-doc qt4的帮助文件
~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.
下面是一些选装的安装包
4) sudo apt-get install libqt4-opengl-dev
Qt4 OpenGL 相关的开发库文件
5) sudo apt-get install libqt4-sql-mysql libqt4-sql-odbc libqt4-sql-psql libqt4-sql-sqlite libqt4-sql-sqlite2
开发数据库所要的一些插件驱动,可选取自己需要的包安装
5.1) sudo install libiodbc2-dev libmysqlclient15-dev libsqlite3-dev
对应步骤5)中的数据库所需的开发库文件
你可能还需要的内容 appendix
a1) sudo aptitude search qt4
这个命令会让你查到和qt4相关的其它内容,比如调试用的符号表文件,pyqt,perlqt等
D. qt 使用svg
QT有个库支持SVG啊,搞清楚那些类之间的关系,就可以了。
SVG开发环境,你是用的什么,你用SVG来做什么的呢?
E. qtsvgitem设置大小
给界面或者按钮上显示一个图标或背景图片,日常使用.png格式的文件完全够用,但是有些使用场景需要把图片放大显示时,使用.png文件就会开始模糊,这时需要加载.SVG文件,即使放大也很清晰。在界面添加一个QLabel控件,最终是要把.Svg图片显示到QLabel中的。
(1)使用QSvgRenderer加载矢量图片.
(2)提供绘制设备,QPixmap对象;
(3)提供画家,QPainter对象;并与绘制设备建立联系;
(4)调用QSvgRenderer的render(painter)函数,让画家执行渲染操作!
(5)最后将绘制设备放到QLabel中。在界面添加一个QLabel控件,最终是要把.Svg图片显示到QLabel中的。
(1)使用QSvgRenderer加载矢量图片.
(2)提供绘制设备,QPixmap对象;
(3)提供画家,QPainter对象;并与绘制设备建立联系;
(4)调用QSvgRenderer的render(painter)函数,让画家执行渲染操作!
(5)最后将绘制设备放到QLabel中。
F. QT 的SVG怎么用,有相关教程吗
建议看看Qt所附带的Demo程序,那里有一个SVG的演示。关注一下类QSvgRenderer
那个演示在..\examples\opengl\framebufferobject,要用QSvgWidget。去下面的地址有QT中SVG文件的绘制和生成程序,你可以看看: http://download.csdn.net/source/1117920