QT开发(三)

坐标系统

#include "mywidget.h"
#include <QPushButton>
#include "mybutton.h"


MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
{
    /* 对于主窗口,坐标系统相对于屏幕
     * 原点:相对于屏幕左上角
     * x: 往右递增
     * y: 往下递增
    */
    move(100, 100);



    /* 子窗口,坐标系统相对于父窗口
     * 原点:相对于窗口空白区域左上角(不包括边框)
     * x: 往右递增
     * y: 往下递增
    */
    QPushButton *b1 = new QPushButton(this);
    b1->move(100, 100);
    b1->setText("son");
    b1->resize(200, 100);


    QPushButton *b2 = new QPushButton(b1);


    b2->move(10, 10);
    b2->setText("sonson");


    MyButton *b3 = new MyButton(this);
    b3->setText("123");


    //1)指定父对象后  2)直接或间接继承于QObject
    //子对象如果是动态分配空间的new,不需要手动释放delete
    //系统会自动释放
    //QT的对象树机制


}


MyWidget::~MyWidget()
{


}

菜单栏工具栏

new project—>Application/QtWidget—>next—>next—>基类选择QMainWindow—>next
在PC端带菜单栏的窗口一般都选择QMainWindow为基类

头文件 #include<QMenuBar>
QmenBar提供了很多接口

    //添加菜单栏,内部动态分配,不需要new
    QMenuBar *mBar = menuBar();
    
    //添加菜单
    QMenu *pFile = mBar->addMenu("文件");
    
    //添加菜单项,添加动作,需要头文件#include<QAction>
    QAction *pNew = pFile->addAction("新建");
    //pNew按下产生信号,控制台输出
    connect(pNew, &QAction::triggered,
            [=]()
            {
                qDebug() << "新建被按下";
            }
            );
    	  //添加分割线·      
       pFile->addSeparator(); 
       QAction *pOpen = pFile->addAction("打开");

  	  //工具栏,菜单项的快捷方式
    QToolBar *toolBar = addToolBar("toolBar");
    
	 //工具栏添加快捷键
     toolBar->addAction(pNew);
     
      //添加小控件
     QPushButton *b = new QPushButton(this);
     b->setText("^_^");
     
       connect(b, &QPushButton::clicked,
            [=]()
            {
                b->setText("123");
            }
            );


  //状态栏,需要头文件#include<QstatusBar >,加标签需要头文件#include<QLabel>..//
  //状态栏会位于窗口最底部
    QStatusBar *sBar = statusBar();
    QLabel *label = new QLabel(this);
    label->setText("Normal text file");
    sBar->addWidget(label);
    
    //addWidget 从左往右添加,快速添加状态标签方法
    sBar->addWidget(new QLabel("2", this));
 
    // addPermanentWidget 从右往左添加
    sBar->addPermanentWidget(new QLabel("3", this));

   //核心控件,需要头文件#include<QTextEdit>,右键弹出copy等核心控件
    QTextEdit *textEdit = new QTextEdit(this);
    setCentralWidget(textEdit);

    //浮动窗口,需要头文件#include<QDockWidget>,可以移动的窗口
    QDockWidget *dock = new QDockWidget(this);
    addDockWidget(Qt::RightDockWidgetArea, dock);
  
    //QT小技巧:不会写函数参数时,先写一个参数然后按F1会有帮助文档信息,不写没有

    //给浮动窗口添加控件
    QTextEdit *textEdit1 = new QTextEdit(this);
    dock->setWidget(textEdit1);
   

模态与非模态对话框

//需要头文件#include<QDialog>

 QMenuBar *mBar = menuBar();
    setMenuBar(mBar);
    QMenu *menu = mBar->addMenu("对话框");
    QAction *p1 = menu->addAction("模态对话框");
    connect(p1, &QAction::triggered,
            [=]()
            {
                QDialog dlg;//直接创建模态对话框
                dlg.exec();//exec(),阻塞等待用户操作
                qDebug() << "111111";
            }
            );

Action *p2 = menu->addAction("非模态对话框");
    connect(p2, &QAction::triggered,
            [=]()
            {
//		 QDialog dlg;
//                dlg.show();//窗口一闪而过,因为lambda表达式结束则消失
//                qDebug() << "111111";


//在mainwindow.h中定义成为QDialog dlg,不会造成内存泄漏,最简单 
//               dlg.show();显示窗口,不会一闪而过
//		qDebug()<<"2222"
		
		
//使用局部变量实现,动态分配空间,
//窗口的释放在程序结束之后,如果需要多次操作该按钮,会导致内存泄露
//                QDialog *p = new QDialog(this);
//                p->show();

//局部变量实现,设置关闭即释放的属性
                 QDialog *p = new QDialog;
                 p->setAttribute(Qt::WA_DeleteOnClose);
                 p->show();
            }


            );

标准对话框和文件对话框

 //设置菜单项"关于对话框",点击后会弹出对话框,标题为"about",内容为"关于qt",且自带一个OK按钮
 //头文件#include<QMessageBox>

  QAction *p3 = menu->addAction("关于对话框");
    connect(p3, &QAction::triggered,
            [=]()
            {
               QMessageBox::about(this, "about", "关于qt");
            }
            );
 //
QAction *p4 = menu->addAction("问题对话框");
    connect(p4, &QAction::triggered,
            [=]()
            {
               int ret = QMessageBox::question(this,
                           "question", "Are you ok?",
                              QMessageBox::Ok |
                                QMessageBox::Cancel);
 //注意QMessageBox::Ok | QMessageBox::Cancel 这个参数是自己指定按钮,默认的话会有YES和NO两个按钮
                                
                switch(ret)
                {
                case QMessageBox::Ok:
                    qDebug() << "i am ok";
                    break;
                case QMessageBox::Cancel:
                    qDebug() << "i am bad";
                    break;
                default:
                    break;
                }
            }
            );

//需要头文件#include<QFileDialog>
    QAction *p5 = menu->addAction("文件对话框");
    connect(p5, &QAction::triggered,
            [=]()
            {
               QString path = QFileDialog::getOpenFileName(
                           this,
                           "open",
                           "../",
             "souce(*.cpp *.h);;Text(*.txt);;all(*.*)"//两个分号分割,
                           );
               qDebug() << path;
            }

//  "souce(*.cpp *.h);;Text(*.txt);;all(*.*)"是在弹出的文件对话框中起按格式过滤作用(会有一个下拉单选择列出的格式),
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             多个格式之间用";;"隔开,如果一行写不下,可以写完一种格式后回车换行,QT进行优化会自动加上双引号后续内部拼接
            );



 






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Qt开发维设计软件是一种常见的选择。Qt是一款跨平台的C++应用开发框架,具有丰富图形渲染和用户界面功能,常适合用于开发维设计件。下面是使用Qt开发维设计软件的一般步骤: 1. 项目设置:创建一个Qt项目,并设置适当的项目属性和依赖库。确保项目包含所需的维渲染和图形库,如Qt 3D等。 2. 界面设计:使用Qt的UI设计器创建用户友好的界面,包括工具栏、视图窗口、属性面板等元素。用户可以通过界面进行维模型的创建、编辑和查看。 3. 维模型创建:使用Qt 3D提供的功能创建维模型。Qt 3D提供了一套强大的维图形渲染和场景管理工具,可以使用C++或QML编写代码来创建和操作维模型。 4. 模型编辑:实现对维模型的编辑功能,如平移、旋转、缩放等操作。通过Qt的输入事件和变换操作,可以实现对模型的交互式编辑。 5. 材质和纹理:为维模型应用适当的材质和纹理。Qt 3D提供了各种材质类型和渲染效果,可以根据需求进行设置。 6. 光照和阴影:添加光源来照亮维模型,并生成逼真的阴影效果。Qt 3D支持不同类型的光源,如定向光、点光源、聚光灯等。 7. 动画和交互:实现模型的动画效果和用户交互。Qt提供了动画框架和交互手段,可以创建模型的变换动画或响应用户操作的交互效果。 8. 导出和保存:实现将维模型导出为文件或保存到数据库的功能。这样用户可以在其他应用程序中使用或分享他们的设计。 需要注意的是,使用Qt开发维设计软件需要熟悉C++编程和Qt框架的知识。同时,为了保证软件在不同操作系统上的兼容性和性能表现,需要进行适当的优化和测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值