文档章节

Qt 的MainWindow类和控件基本使用

startstorm
 startstorm
发布于 2017/02/27 22:08
字数 322
阅读 71
收藏 0

在pro文件中添加

CONFIG += C++11

mainwindow.h文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
};
#endif // MAINWINDOW_H

mainwindow.cpp文件

#include "mainwindow.h"
#include <QMenuBar>         //菜单栏
#include <QMenu>
#include <QAction>
#include <QDebug>
#include <QToolBar>         //工具栏
#include <QPushButton>
#include <QStatusBar>       //状态栏
#include <QLabel>
#include <QTextEdit>        //文本编辑区
#include <QDockWidget>      //浮动窗口
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    //菜单栏
    QMenuBar *mBar = menuBar();

    //添加菜单
    QMenu *pFile = mBar->addMenu("文件");

    //添加菜单项,添加动作
    QAction *pNew = pFile->addAction("新建");

    connect(pNew,&QAction::triggered,
            [=]()
            {
              qDebug() << "新建被按下";
            }

            );

    pFile->addSeparator();//添加分割线
    QAction *pOpen = pFile->addAction("打开");

    //工具栏 菜单的快捷方式
    QToolBar *toolBar = addToolBar("tooBar");

    //工具栏添加快捷键
    toolBar->addAction(pNew);


    QPushButton *b = new QPushButton(this);
    b->setText("?-?");
    //添加小控件
    toolBar->addWidget(b);

    connect(b,&QPushButton::clicked,
            [=]()
            {
              b->setText("123");
            }

            );
    //状态栏
    QStatusBar *sBar = statusBar();
    QLabel *label = new QLabel(this);
    label->setText("normal text file");
    sBar->addWidget(label);
    //addWidget从左往右添加
    sBar->addWidget(new QLabel("123",this));
    //addpermanentwidget从右往左添加
    sBar->addPermanentWidget(new QLabel("000",this));

    //核心控件
    QTextEdit *textedit = new QTextEdit(this);
    setCentralWidget(textedit);

    //浮动窗口
    QDockWidget *dock = new QDockWidget(this);
    addDockWidget(Qt::RightDockWidgetArea,dock);
    //给浮动窗口添加控件
    QTextEdit *textedit1 = new QTextEdit(this);
    dock->setWidget(textedit1);
}

MainWindow::~MainWindow()
{

}

main.cpp文件

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

运行结果图,点击按钮,按钮上的文字会变成123.

© 著作权归作者所有

共有 人打赏支持
startstorm
粉丝 6
博文 53
码字总数 21034
作品 0
浦东
程序员
私信 提问
Qt5开发及实例学习之停靠窗口QDockWidget类

Qt之停靠窗口QDockWidget类 设置停靠窗口的一般流程 1、创建一个QDockWidget对象的停靠窗口 2、设置此停靠窗体的属性,通常调用setFeatures()以及setAllowAreas()两种方法 3、新建一个要插入...

OceanStar
09/02
0
1
QT4学习笔记 重新实现事件处理函数(Reimplementing Event Handlers)

http://hi.baidu.com/changfa1999/blog/item/a4f75a7ad06fcae82f73b3b4.html 7.1 重新实现事件处理函数(Reimplementing Event Handlers) 在Qt中,一个事件是QEvent的子类的对象。Qt能够处理上......

长平狐
2012/06/12
331
0
PyQt实现一个简单的License系统(二)

本文接着上一篇继续讲解“PyQt实现一个简单的License系统”,主要包括: 3)如何用python创建一个GUI。 4)python如何调C DLL库。 5)ctypes中类型处理。 上一篇文章只是简单的将ui文件转换为...

sagittarius_warrior
2017/06/01
0
0
Opencv配置方法汇总:Xcode/CLion/Qt

Opencv版本3.4.1 重复的基本步骤我会给出网上各位大神的链接,下面是我自己遇到的一些特殊问题(网上又很难找到)的汇总,希望对你有帮助! 我自己的opencv是通过CMake编译安装的。 Xcode: ...

isee_nh
05/24
0
0
Hello World - Linux上的 MeeGo x86 开发

介绍 这个教程介绍了Linux下的 MeeGo x86 开发。教程解说了基本的开发流程,重点介绍了如何使用SDK附带的那些工具。 教程不会涉及一些开发细节,例如 Qt 和 MeeGo 的 API、或是如何将程序整合...

长平狐
2013/01/11
54
0

没有更多内容

加载失败,请刷新页面

加载更多

eslint rules 规则

'rules': { "comma-dangle": ["error", "never"], //是否允许对象中出现结尾逗号 "no-cond-assign": 2, //条件语句的条件中不允许出现赋值运算符 "no-console": 2, //不允许出现console语句 ...

agenyun
39分钟前
1
0
类型判断时instanceof和equals的不同用法

接口设计时为了避免序列化的麻烦,将接口定义为参数为map<String,String>类型的接口,但是现在调用时需要转换当前的实体Bean为Map,接口接收方再把Map转换为另一个Bean实体。过程中的需要对类...

wangtx
45分钟前
2
0
vue 组件间传值(个人精编)

1.父组件向子组件传值 1⃣️.子组件标签绑定需要传递的参数名2⃣️.子组件页面使用props 接收参数 2.子组件向父组件传值  1⃣️.子组件使用$emit来触发一个自定义事件,并传递一个参...

MrBoyce
56分钟前
1
0
(荷兰)彼得·冯·门施著:博物馆学研究的目的

博物馆学研究的目的 (荷)彼得·冯·门施 尽管诸多关于博物馆学认知目的的不同看法可以被归纳为数个主要群体,但没有一个群体可以被称为“学派”。一般来说,学派是由于博物馆学研究目的的不...

乔老哥
今天
3
0
Vue slot的用法

之前看官方文档,由于自己理解的偏差,不知道slot是干嘛的,看到小标题,使用Slot分发内容,就以为 是要往下派发内容。然后就没有理解插槽的概念。其实说白了,使用slot就是先圈一块地,将来...

peakedness丶
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部