Qt中的一些知识小结(转)

简介: QCreator(2.5.0)安装的时候已经不自带MinGW,因此要自行安装.当然我们也可以用VS的编译器进行编译,这样装了微软的VS后我们在QtCreator中设置好微软的编译器目录,然后在QtCreator中进行编写代码,编译调试等. Qt从源代码编译容易忽略的Perl问题 如何从源代码编译Qt,那就是编译前先安装Perl,因为里面有些脚本是用Perl写的,如果不安装的话,在configure的时候会导致这些脚本不能执行,因此会少复制很多文件到指定的文件夹,那么编译的时候就会出现“找不到文件”之类的错误。
  1. QCreator(2.5.0)安装的时候已经不自带MinGW,因此要自行安装.当然我们也可以用VS的编译器进行编译,这样装了微软的VS后我们在QtCreator中设置好微软的编译器目录,然后在QtCreator中进行编写代码,编译调试等.

  2. Qt从源代码编译容易忽略的Perl问题

    如何从源代码编译Qt,那就是编译前先安装Perl,因为里面有些脚本是用Perl写的,如果不安装的话,在configure的时候会导致这些脚本不能执行,因此会少复制很多文件到指定的文件夹,那么编译的时候就会出现“找不到文件”之类的错误。这个是必须要安装的,win下可以直接安装activeperl即可。

  3. Qt 3.x支持setMainWidget,但是Qt4已经取消了对setMainWidget的支持。

  4. 4.3之后就没有了QVbox,取而代之的是QVBoxLayout类;
  5. Qt中用来显示图片的控件为Label后者用TextBrowser.当用Label显示时,需要用setPixmap函数,且该函数对应传入与图像相关的参数为图像的数据部分;当用TextBrowser显示时,直接用append函数即可。该函数对应传入与图像相关的参数为图像的文件名(要包含路径)。
  6. 显示文本的控件为TextBrowser.
  7. 获得spinBox的值是调用其value()函数。
  8. 获得LineEdit的值是调用其text()函数,然后转换成相应的数据类型即可。
  9. .ui中的close函数只是关闭窗口的显示功能而已,并没有delete掉里面的变量。
  10.  QPalette为调色版,其颜色组分为3组,活动组,非活动组.
  11. 可用组;其中活动组为当前窗口所在组,非活动组为其它窗口所在组,不可用组是由于某种原因暂时不能使用的组 。改变调色版的颜色可以使用setColor这个函数,这个函数有2个重载函数,其中参数ColorRole表示是更改哪个参数;比如说一般的背景色。
  12. EditLine背景色颜色角色为QPalette::Base;前景色文字的颜色角色为QPalette::Text.
  13. Button背景色颜色角色为QPalette::Button.前景色文字的颜色角色为QPalette::ButtonText.
  14. Label前景文字颜色角色为QPalette::WindowText.
  15.  当在TextBrowser中进行图片显示时,如果需要让显示图片的窗口自适应图片的大小,可采用QTextBrowser下的setFixedWidth()和setFixedHeight()函数来设置窗口尺寸,其参数是从图片中获取。当然这个设置的窗口长和宽已经包括了右边和下边的滚动条,所以给参数的时候需要把这2者考虑进去。
  16. 要对整个窗口的背景该色,且不改变其上面控件的背景色,则这时需用QPalette类。且时需用Window作为背景色角色;如果用Base作为背景色角色的话,那么它只会改变QTextEidt类及其派生类的背景色;如果用seStyleSheet,其用background-color的话,那么它会把其上面的控件背景色全改了,且相应的子窗口的也都改了。
  17. 在Qt中,将1个数值a转换成文本,可采用,tr(“%1”).arg(a).也可采用QString::number(a).
  18.  实际运行到这几句代码时,并不是显示完first,延时1s后显示second,再延时1s后显示third. 而是直接延时2秒,first,second,third同时显示呢? 
  19. setCentralWidget()函数是把控件布满整个界面的语句。
  20.  在Qt程序其中的一个函数中,如果需要调用另一个窗口类且显示出来,则有2种方法。其一是在本类中定义一个全局变量,然后在这个函数中new一个对象。如下所示:

  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()函数来进行延时。

    

相关文章
|
5月前
|
存储 Cloud Native 前端开发
Qt QScrollArea使用
Qt QScrollArea使用
|
5月前
26 QT - 事件过滤器
26 QT - 事件过滤器
22 0
|
安全 并行计算
Qt之QFutureWatcher
简述 QFuture 表示异步计算的结果,QFutureWatcher 则允许使用信号和槽监视 QFuture,也就是说,QFutureWatcher 是为 QFuture 而生的。 简述 详细描述 基本使用 更多参考 详细描述 QFutureWatcher 提供了有关 QFuture 的信息和通知,使用 setFuture() 函数开始监视一个特
3532 0
|
Unix Linux Windows
Qt之QLocalServer
简述 QLocalServer提供了一个基于本地socket的server。 QLocalServer可以接受来自本地socket的连接。通过调用listen(),让server监听来自特定key的连接。 调用nextPendingConnection()来接受一个挂起(等待)的连接作为一个已连接的QLocalSocket。函数返一个QLocalSocket指针,可以被
1933 0
Qt之QSpinBox和QDoubleSpinBox
简述 QSpinBox和QDoubleSpinBox均派生自QAbstractSpinBox。 QSpinBox旨在处理整数和离散值(例如:月份名称),QDoubleSpinBox则用于处理浮点值。他们之间的区别就是处理数据的类型不同,其他功能都基本相同。 QDoubleSpinBox的默认的精度是2位小数,但可以通过setDecimals()来改变。 下面主要以QS
1880 0
|
网络协议 存储
Qt之QNetworkAddressEntry
简述 QNetworkAddressEntry类由网络接口支持,存储了一个IP地址,子网掩码和广播地址。 每个网络接口可以包含零个或多个IP地址,进而可以关联到一个子网掩码和/或一个广播地址(取决于操作系统的支持)。 这个类代表一个这样的组。 简述 常用接口 使用 更多参考 常用接口 QHostAddress broadcast() co
1716 0
|
存储 Windows
Qt之QSizePolicy
简述 QSizePolicy类是一个描述布局水平和垂直方向调整策略的属性。 大小策略会影响布局引擎处理部件的方式,部件加入布局以后,会返回一个QSizePolicy,描述了其水平和垂直方向的大小策略。可以通过QWidget::sizePolicy属性为特定部件设置大小策略。 简述 详细描述 成员类型 公共函数 示例 控制类型 QSizePolicy 默认效果
2037 0
|
索引
Qt之QSequentialAnimationGroup
简述 QSequentialAnimationGroup类提供动画的串行组。 QSequentialAnimationGroup是一个串行运行动画的QAnimationGroup,在另一个动画播放结束之后,开启一个新的动画,根据添加到动画组的顺序(使用addAnimation() 或 insertAnimation())来播放动画,当最后一个动画完成以后,动画组随之完成。
1212 0
|
存储
Qt之QPropertyAnimation
简述 QPropertyAnimation类定义了Qt的属性动画。 QPropertyAnimation以Qt属性做差值,作为属性值存储在QVariants中,该类继承自QVariantAnimation,并支持基类相同的元类型动画。 声明属性的类必须是一个QObject,为了能够让属性可以用做动画效果,必须提供一个setter(这样,QPropertyAnimatio
1658 0
|
iOS开发
Qt之QCheckBox
简述 QCheckBox继承自QAbstractButton,它提供了一个带文本标签的复选框。 QCheckBox(复选框)和QRadioButton(单选框)都是选项按钮。这是因为它们都可以在开(选中)或者关(未选中)之间切换。区别是对用户选择的限制:单选框定义了“多选一”的选择,而复选框提供的是“多选多”的选择。 尽管在技术上可以通过复选框来实现单选框的行为,反之亦
2069 0

热门文章

最新文章