qt学习笔记(二)之布局管理器&信号与槽(简介)

转载 2015年07月09日 14:58:20

我们在上节的程序中加点小应用。主要是用到了布局管理器和信号与槽。在这里我也只是简单介绍一下~~随着后续的深入研究,接下来会具体介绍~

一、布局管理器

  1. #include <QtGui>  
  2.   
  3.   
  4. int main(int argc, char *argv[])  
  5. {  
  6.     QApplication a(argc, argv);  
  7.   
  8.     QTextCodec::setCodecForTr(QTextCodec::codecForLocale());  
  9.   
  10.     QWidget *pwidget = new QWidget; //create a new widget  
  11.   
  12.     QLabel label(pwidget);  //label's parent is pwidget  
  13.     // QLabel *label = new QLabel(pwidget);  
  14.     label.setText(QObject::tr("Hello world"));  //set the label text  
  15.     QPushButton closeBtn(pwidget);  
  16.     closeBtn.setText(QObject::tr("关闭"));  
  17.   
  18.     QVBoxLayout layout;         //垂直布局  
  19.     layout.addWidget(&label);   //添加部件  
  20.     layout.addWidget(&closeBtn);  
  21.     pwidget->setLayout(&layout);//布局应用到pwidget  
  22.   
  23.     pwidget->show();  
  24.   
  25.     return a.exec();  
  26. }  
在这里我们定义一个垂直布局管理器layout ,每个布局管理器设计后,都必须调用QWidget::setLayout(QLayout*layout)。否则界面会显示不是很正常。

因为你定义的Qt部件其的起始坐标、宽度、高度都是一致的。

我们可以从简单的测试代码得到验证。

  1. qDebug() << closeBtn.pos() << label.pos();  
  2. qDebug() << closeBtn.width() << closeBtn.height();  
  3. qDebug() << label.width() << label.height();  

显然,在文件头我们要添加#include <QDebug>,执行效果如下图所示。

qDebug()经常用于调试信息输出。


/*

顶级layout需要设置到应用窗口部件

parent_layout->addlayout(child_layout);

对于子layout我们可以调用addlayout添加到父layout中

*/


程序的正常执行效果图如下

我们再上面的基础上加上信号与槽,在16行后加上

  1. QObject::connect(&closeBtn, SIGNAL(clicked()), pwidget, SLOT(close()));  

效果就是当我们点击窗口的关闭按钮,整个窗口将被关闭。

  1. QObject::connect(const QObject *asender, const char *asignal, const char *amember, Qt::ConnectionType atype)  

由于clicked()和close()已经有Qt定义了,所以我们无需实现。SIGNAL()和SLOT()是Qt定义的2个宏,它们返回其参数的字符串(const char *)

相关文章推荐

qt学习笔记(二)之布局管理器&信号与槽(简介)

我们在上节的程序中加点小应用。主要是用到了布局管理器和信号与槽。在这里我也只是简单介绍一下~~随着后续的深入研究,接下来会具体介绍~ 一、布局管理器 #include int main(...

QT学习笔记----布局管理器的使用

转载请注明出处:奔跑的蜗牛(袁方的技术博客)http://blog.csdn.net/yf210yf/article/details/7383558 (这里主要以垂直布局管理器进行讲解,其他类型管理...
  • yf210yf
  • yf210yf
  • 2012年03月22日 16:05
  • 7577

android学习笔记(1)--布局管理器

写在前面 简单了解Android UI组件: 1. Android中的所有UI组件都继承自android.view.View类,所有的UI组件都位于android.view包 和android.wi...

Java Swing学习笔记——GUI布局管理器

进行过java GUI编程的人一定都接触过布局管理器,最近研究了一下,写下总结供初学者参考~ GUI布局管理器大致可以分为三种 BorderLayout,FlowLayout,GridLayout ...

Java Swing学习笔记--GUI布局管理器

进行过java GUI编程的人一定都接触过布局管理器,最近研究了一下,写下总结供初学者参考~GUI布局管理器大致可以分为三种 BorderLayout,FlowLayout,GridLayout1.B...

JAVA学习笔记(四十五) - 布局管理器

FlowLayout流式布局管理器/* * FlowLayout流式布局管理器 */ public class Test03 { public static void main(Strin...

Qt学习——布局管理器QLayout类 .

常用的布局管理有QVBoxLayout,QHBoxLayout,QGridLayout。 下面是综合应用: 新建Qt Gui程序,基类为Dialog 头文件: view...

Qt学习——布局管理器QLayout类

最近感觉没有那么多时间在网上写学习笔记了。还是自己在本子上手写吧。这里只贴上代码和截图记录自己的学习历程。 常用的布局管理有QVBoxLayout,QHBoxLayout,QGridLayo...

Qt学习之七:布局管理器

所谓 GUI 界面,归根结底,就是一堆组件的叠加。我们创建一个窗口,把按钮放上面,把图标放上面,这样就成了一个界面。在放置时,组件的位置尤其重要。我们必须要指定组件放在哪里, 以便窗口能够按照我们需...

Qt布局管理器的使用(二)

Qt布局管理器的使用(二)         前面博文(http://blog.csdn.net/u013704336/article/details/38960353)讲解了手动布局的基本思路,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:qt学习笔记(二)之布局管理器&信号与槽(简介)
举报原因:
原因补充:

(最多只允许输入30个字)