QCreator(2.5.0)安装的时候已经不自带MinGW,因此要自行安装.当然我们也可以用VS的编译器进行编译,这样装了微软的VS后我们在QtCreator中设置好微软的编译器目录,然后在QtCreator中进行编写代码,编译调试等.
如何从源代码编译Qt,那就是编译前先安装Perl,因为里面有些脚本是用Perl写的,如果不安装的话,在configure的时候会导致这些脚本不能执行,因此会少复制很多文件到指定的文件夹,那么编译的时候就会出现“找不到文件”之类的错误。这个是必须要安装的,win下可以直接安装activeperl即可。
Qt 3.x支持setMainWidget,但是Qt4已经取消了对setMainWidget的支持。
void MainWindow::on_actionNew_Window_triggered()
{
my_dailog = new Dialog(this);
my_dailog->show();
}
这种情况下建立的窗口时非模态的,且可以同时调出多个my_dialog窗口来。
另外一种方法是在程序内部定义一个类对象,如下所示:
void MainWindow::on_actionNew_Window_triggered()
{
Dialog my_dialog;
my_dialog.setModal(false);
my_dialog.exec();
}
但是不管其模态设置是否为true,该窗口都是模态的,即该窗口显示出来时其它的窗口不能工作了。当然此时只能显示1个my_dialog了。
20. 如果想要窗口内部的控件大小随着窗口拉伸等变化而变化,则需要在布局中设置,点击ui文件中的主体,然后选择布局控件中满足自己需求的一个即可。
21. window下的路径名需要用2个左斜杠或者1个右斜杆。即”/”或者””。
22. 在界面中设置显示的文字属性,如果在cpp中被重新设置了,那么运行时是以cpp中设置的最后的设置,因为这些属性被覆盖掉了.
23. 在Qt Designer界面设计中,label中显示的内容各种属性都可以设置,比如字体格式,颜色等.但是PushButton中显示的字体在属性栏就只能更改其内容。如果要更改其它属性则需要在代码中实现。
24. 一般信号中的toggled是指对应的属性为checkable,然后被鼠标单击了下而发射的。这个在复选按钮和单选按钮中比较常见,但是在PushButton中也是可以用的,将PushButton的属性checkable设置为真,则运行时鼠标单击一下,按钮的颜色会变淡,再单击一下又会变亮,它是以颜色的的深浅来提醒它的toggle的。
菜单栏中的一个选项,一般是用trigger来发射信号。
25. Qt的MessageBox中比较常用的是,MessageBox::warning(),MessageBox::information,MessageBox:YES等。
26. 在LineEdit中有一个echoMode,里面可以选中password模式,则在LineEdit中输入的内容对用户是不可见的,当然对系统是可见的,我们可以将其内容读取出来。
27. Cmobo Box中增加一项用的是addItem()函数。例如:
ui->comboBox->addItem("China");
28. Qt中QListView是基于Model的,QListWidget是基于Item的。
29. 如果是用QListWidget的话,加入内容采用的是addItem()方法。
30. 头文件和对应的源文件可以同时include同一个头文件。
31. 用滑动条触发进度条的实验中,至少有下面3种方法可以执行。
可以直接在界面设计的信号与槽中连接好对应的信号与槽。无需任何代码。
在界面的构造函数中用connect函数连接好信号与槽,也无需其他代码。如下:
connect(ui->horizontalSlider, SIGNAL(valueChanged(int)), ui->progressBar, SLOT(setValue(int)));
可以在滑动条值改变的槽函数中实现,如下:
void Dialog::on_horizontalSlider_valueChanged(int value)
{
ui->progressBar->setValue(ui->horizontalSlider->value());
}
32. 让状态栏显示文本不是采用setText()方法,而是采用showMessage().其第二个参数为显示该内容持续的时间,以毫秒为单位。
33. 如果在Qt Creator中需要带参数运行,因为在main函数中经常有argv这个变量传入参数,这可以在Qt Creator的左侧Project一栏中—>Targets—>Desttop(中间偏上的位置)—>Run —>Arguments中输入需要附加的参数即可。
34. QtextEdit除了用append()函数显示图片外,还可以用insertHtml()函数和setPlainText()来显示,用法类似,其中insertHtml()可以用来显示图片和有格式的文字,而setPlainText()只能用来显示无格式的文字。
35. Qt Gui界面的显示是在程序的构造函数执行完后完成的,所以如果在构造函数中对界面有动态的输出效果我们是看不到的,只能都构造函数执行完了后才能看到最后的结果。那么怎么办才能做到在构造函数结束时自动调用某一程序来完成我们想要看到的动态初始化效果呢?这里可以使用QTimer下的singleShot()函数。
36. Qtimer::singleShot(0, this, SLOT(event()));
37. 其中第一个参数为时隔多长(单位为ms)执行后面的event信号函数,当然该函数的函数名可以自己定义。这句代码的意思是立即执行执行event()函数。
和sleep()函数一样,在Qt中也不能用opencv中的waitKey()函数来进行延时。