一起做网站女装夏季裙,广州 天河网站设计,软件下载网站模板,杭州seo论坛1.QMainWindow中常用的类
继承于QMainWindow类#xff0c;原因该类提供了QWidget没有提供的成员函数。
菜单栏、工具栏、状态栏、浮动窗口#xff08;铆接部件#xff09;、核心部件 1.1 菜单栏 QMenuBar //创建菜单栏 QMenuBar 最多只能有一个 QMenuBar *mbar menu…1.QMainWindow中常用的类
继承于QMainWindow类原因该类提供了QWidget没有提供的成员函数。
菜单栏、工具栏、状态栏、浮动窗口铆接部件、核心部件 1.1 菜单栏 QMenuBar //创建菜单栏 QMenuBar 最多只能有一个 QMenuBar *mbar menuBar(); //将菜单栏放入窗口中 this-setMenuBar(mbar); //往菜单栏里增加菜单 QMenu *file mbar-addMenu(文件); QMenu *edit mbar-addMenu(编辑); //往菜单中增加菜单项 file-addAction(新建); //增加分隔符 file-addSeparator(); file-addAction(打开); 1.2 工具栏 QToolBar //创建工具栏 QToolBar 可以有多个 QToolBar *tbar new QToolBar(this); //将工具栏放入窗口中 设置停靠区域 this-addToolBar(Qt::LeftToolBarArea,tbar); //后期设置 只允许左右停靠 tbar-setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea); //不允许浮动 tbar-setFloatable(false); //往工具栏中增加工具项 tbar-addAction(欢迎); //实例化一个按钮 QPushButton *btn new QPushButton(this); btn-setText(编辑); //将按钮放入工具栏中 tbar-addWidget(btn); 1.3 状态栏 QStatusBar //创建状态栏 QStatusBar 最多只能有一个 QStatusBar *sbar statusBar(); //将状态栏放入窗口中 this-setStatusBar(sbar); //实例化一个标签 QLabel *lab new QLabel(问题,this); //将标签放入状态栏中 //sbar-addWidget(lab);//默认从左边显示 sbar-addPermanentWidget(lab); //默认从右边显示 1.4 浮动窗口 QDockWidget //创建浮动窗口 QDockWidget 可以有多个 QDockWidget *dock new QDockWidget(浮动窗口,this); //将浮动窗口放入界面中 this-addDockWidget(Qt::BottomDockWidgetArea,dock); //后期设置 只允许左右停靠 dock-setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); //创建中心部件 最多只能有一个 QTextEdit *text_edit new QTextEdit(this); //将中心部件放入窗口中 this-setCentralWidget(text_edit); 2.ui界面文件
1 ui界面文件是在项目工程文件的Forms文件夹下XXX.ui
2 ui界面上可以通过ui指针访问到ui界面上的所有组件。 3.信号与槽
qt以引为傲的核心机制对象树、信号与槽、事件机制
1 信号和槽是qt的核心机制之一可以实现多个组件之间的通信。
2 信号信号函数。信号定义在类体的signals权限下信号函数是一个不完整的函数只需要声明不需要实现。
3 槽槽函数。槽定义在类体的slots权限下槽函数是一个完整的函数既要有声明也要有定义。该函数可以当成普通函数使用。
4 任意一个组件都有系统提供的信号和槽。 3.1 带有信号和槽的类体定义 signals: //信号权限该权限下函数 都是信号 void my_signal(); //只需要声明 不需要实现 public slots: //槽函数权限 该权限下函数 都是槽函数 void my_slot(); //需要声明 也要实现 3.2 信号和槽的连接方式
3.2.1
基于ui界面上的连接在ui界面下的信号和槽区将系统提供的信号和槽进行连接。
该连接无需手动书写信号函数、槽函数、连接函数 3.2.2
基于ui界面上的连接在组件上右击转到槽选中要发射的信号在槽函数中处理相关逻辑代码。
该连接无需手动书写信号函数、连接函数 3.2.3
手动连接信号和槽基于qt4版本的连接该连接是不友好的连接。
需要使用connect连接函数进行连接在QObject类中 [static] QMetaObject::Connection //函数的返回值类型 静态成员函数 QObject::connect( //函数名 const QObject *sender, //发送者 组件的指针 const char *signal, //发送的信号 信号的函数 应该用函数指针接收 不能用char *接收 所以需要使用宏函数转换 const QObject *receiver, //接受者 组件的指针 const char *method, // 槽函数 应该用函数指针接收 不能用char *接收 所以需要使用宏函数转换 ) 信号宏函数 SIGNAL() 槽宏函数 SLOT() 3.2.4
手动连接信号和槽基于qt5版本的连接该连接就是友好的连接
需要使用connect连接函数进行连接在QObject类中 [static] QMetaObject::Connection //函数返回值类 静态函数 QObject::connect( //函数名 const QObject *sender, //信号的发送者 组件的指针 PointerToMemberFunction signal, //信号函数 可以直接传函数名 原因是函数指针接收 const QObject *receiver, //信号的接收者 组件的指针 PointerToMemberFunction method, //槽函数 可以直接传函数名 原因是函数指针接收 ) 3.2.5
手动连接信号和功能函数如果信号一旦被触发则自动执行功能函数中的内容。
功能函数全局函数、lambda表达式 [static] QMetaObject::Connection QObject::connect( const QObject *sender, PointerToMemberFunction signal, Functor functor//功能函数 ) 3.3 自定义的信号
自定义的信号定义在signals权限下是一个不完整的函数只要声明不要实现。
自定义 的信号需要手动触发使用emit关键字进行发射信号如果自定义的信号一旦被发射则会自动执行对应的槽函数处理 3.4 断开连接
disconnect()和connect()函数的参数一样 作业 #include widget.h
#include ui_widget.hWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui-setupUi(this);connect(ui-btn1,SIGNAL(clicked()),this,SLOT(close()));connect(ui-logbtn,QPushButton::clicked,this,Widget::my_slot1);}Widget::~Widget()
{delete ui;
}void Widget::my_slot1()
{QString uname;QString pword;unameui-ed1-text();pwordui-ed2-text();if(unameadmin pword123456){qDebug() 登录成功 ;this-close();}else{qDebug() 登录失败;ui-ed2-clear();}}