Qt编程基础入门之二

摘要:
QMainWindow菜单栏菜单栏最多有一个//菜单栏创建,一个QMenuBar*menu=newQMenuBar;//this->setMenuBar;//创建菜单QMenu*file_menu=menu->addMenu;QMenu*edit_menu=menu->addMenu;//创建菜单项QAction*new_action=file_menu->addAction;//添加分割线file_menu->addSeparator();QAction*open_action=file_menu->addAction;工具栏可以有多个。非模态是可以对其他窗口进行操作的。区别就在于是对象创建区域和显示方式。

QMainWindow

1588943662681

菜单栏

菜单栏 最多有一个

//菜单栏创建,一个
QMenuBar *menu = new QMenuBar(this);
//    this->setMenuBar(menu);

//创建菜单
QMenu *file_menu =  menu->addMenu("文件");
QMenu *edit_menu =  menu->addMenu("编辑");
//创建菜单项
QAction *new_action = file_menu->addAction("新建");
//添加分割线
file_menu->addSeparator();
QAction *open_action = file_menu->addAction("打开");

工具栏

可以有多个。可以添加菜单项或者小控件

//工具栏,多个
QToolBar *tool = new QToolBar(this);
this->addToolBar(Qt::RightToolBarArea, tool);
tool->addAction("1");
tool->addAction("2");
//只允许左右停靠
tool->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
//禁用 浮动
tool->setFloatable(false);
tool->addAction(new_action);
//添加控件
QPushButton *btn = new QPushButton("hello", this);
tool->addWidget(btn);
//禁用移动
tool->setMovable(false);

状态栏

//状态栏,一个
QStatusBar *status = new QStatusBar(this);
setStatusBar(status);

//标签控件
QLabel *label = new QLabel("提示信息",this);
status->addWidget(label);
QLabel *label2 = new QLabel("右侧提示信息", this);
status->addPermanentWidget(label2);

铆接部件

//铆接部件,多个
QDockWidget *dock = new QDockWidget("浮动", this);
addDockWidget(Qt::BottomDockWidgetArea, dock);
//设置后期停靠区域,只允许上下
dock->setAllowedAreas(Qt::TopDockWidgetArea);

中心部件

//中心部件,一个
QTextEdit *text_edit = new QTextEdit(this);
setCentralWidget(text_edit);

对话框

模态与非模态

对话框分为模态和非模态。模态就是不能对其他窗口进行操作,因为被阻塞了。非模态是可以对其他窗口进行操作的。区别就在于是对象创建区域和显示方式。

//弹出一个对话框
connect(ui->actionnew, &QAction::triggered, [&](){
    //对话框 分类
    //模态对话框(不可以对其他窗口进行操作)和非模态对话框(可以对其他窗口进行操作)
    //模态创建 阻塞
    //        QDialog dlg(this);
    //        dlg.resize(240, 240);
    //        dlg.exec();
    //        qDebug() << "模态对话框弹出了";
    //非模态对话框
    //QDialog dlg2(this);//这种方法窗口会一闪而过,因为对象在栈里面,退出函数之后会导致数据消失
    //dlg2.show();
    //new的数据存放在堆里面,需要手动释放才会消失
    QDialog *dlg2 = new QDialog(this);
    dlg2->setAttribute(Qt::WA_DeleteOnClose);//这样在关闭对话窗口的时候会删除该数据,避免内存泄漏
    dlg2->show();

});

消息对话框

//错误对话框
//        QMessageBox::critical(this, "critical", "错误");
//信息对话框
//        QMessageBox::information(this, "info", "信息");
//question
//父窗口, title, text, 选项, 默认选项
//        if(QMessageBox::Save == QMessageBox::question(this,
//                                                      "question", "问题",
//                                                      (QMessageBox::Save|QMessageBox::Cancel),
//                                                      QMessageBox::Cancel)){
//            qDebug() << "You select save";
//        }
//        else{
//            qDebug() << "You select cancel";
//        }
//警告
QMessageBox::warning(this, "warning", "警告");

颜色选取

//颜色
QColor color = QColorDialog::getColor();
qDebug() << "r = " << color.red() << "g = " << color.green() << "b = " << color.green();

文件选择

//文件选取对话框
//父窗口、标题、默认路径、要求文件后缀
//        QString file_name = QFileDialog::getOpenFileName(this, "打开文件", "D:\Users\wangzhankun\qt\test", "*.cpp");
//        qDebug() << file_name;
qDebug() << QFileDialog::getExistingDirectory(this, "打开文件夹");

字体选择

bool flag = true;
QFont font = QFontDialog::getFont(&flag, QFont("华文彩云", 36), this);
qDebug() << "字体" << font.family()
    << "字号" << font.pointSize()
    << "是否加粗" << font.bold()
    ;

登录窗口布局

  1. 实现登陆窗口

  2. 利用布局方式 给窗口进行美化

  3. 选取 widget 进行布局 ,水平布局、垂直布局、栅格布局

  4. 给用户名、密码、登陆、退出按钮进行布局

  5. 默认窗口和控件之间 有9像素间隙,可以调整 layoutLeftMargin

  6. 利用弹簧进行布局

  7. sizePolicy控制widget高度是否与内容一致

  8. echoMode修改为password

免责声明:文章转载自《Qt编程基础入门之二》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇HTML,CSS,font-family:中文字体的英文名称 (宋体 微软雅黑)web窗体的运用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

weblogic 的应用链接不上数据库报异常 Caused By: weblogic.common.ResourceException: Io exception: Connection reset 错误信息表示访问数据库异常,创建链接池失败

weblogic对此值注释:尝试建立数据库连接的间隔秒数。如果已设置此值且在创建数据源时数据库不可用,则在您指定的秒数之后,WebLogicServer将重新尝试在池中创建连接,并会不断尝试创建连接,直到创建成功。如果设置为0,则将禁用连接重试。...

移动通信网络中的 GTP 协议

在EPSUP中使用GTP的优点之一是GTP具有固有的可识别隧道机制和GTP可以为UE提供的移动性。注意:GTPv2-U协议不存在。GTP-C协议GTP-C是GTP的控制平面,使用UDP端口2123。在EPS中,GTPv2-C协议负责创建、维护和删除S1、S5/S8和其他接口上的GTP-U隧道。它是一种基于IP的隧道协议,允许在GTP UProtocolEnt...

vscode 用户设置与工作区设置

用户设置与工作空间设置VSCode提供了两种设置方式:-用户设置:这种方式进行的设置,会应用于该用户打开的所有工程;-工作空间设置:工作空间是指使用VSCode打开的某个文件夹,在该文件夹下会创建一个名为.vscode的隐藏文件夹,里面包含着仅适用于当前目录的VSCode的设置,工作空间的设置会覆盖用户的设置。更改默认用户设置与工作空间设置VSCode的设置...

docker run hangs问题排查记录

1.故障描述过去两天遇到了一个非常奇怪的问题。现在完整的故障描述如下:1)首先,我的同事告诉我,K8S集群中的一个工作节点将其状态更改为NoReady,并且在节点kubelet_truntime的错误日志中发现了大量此类日志E060301:50:51.45511776268remote。go:332]ExecSync1f0e3ac13faf224129bc4...

制作多合一安装U盘(Windows + Linux + macOS)精解

在此,我给大家讲解一下,如何制作多系统安装U盘。首先,本教程用到的工具如下:1.WinSetupFromUSB1.9下载链接:https://share.weiyun.com/5gtbB3y密码:vector2.分区助手专业版下载链接:http://www2.aomeisoftware.com/download/pacn/PAClean.zip3.各类Win...

海康、大华网络摄像机RTSP URL格式组成及参数配置

1.海康相机在IE浏览器中输入网络摄像头的IP地址,输入配置的用户名和密码,然后登录:视频:1。比特率类型:主流和子流,主流支持的分辨率相对较高;2.视频类型:如果需要音频和视频,则选择“复合流”;如果只需要视频,则选择“视频流”;3.分辨率设置不重复;4.码率类型:代码更改率!!!...