精华内容
下载资源
问答
  • QT项目合并的问题

    2015-12-15 11:10:04
    [img=... 如图为官方的实例,用qtcreator创建的项目(.pro)怎么合并到一个项目中? 我试过Qt上的“导入其他项目”的选项合并,但总是没有上图的效果。 请问应该怎么做?
  • Qt天气项目(1)

    2021-09-17 23:14:06
    Qt天气项目 一、项目的创建以及基础工作的准备 1.设置窗口的背景图片的添加 2.标签的设置 3.窗口中线条的设置 4.窗口高度以及宽度的设置 5.使用代码设置窗口的部分属性 setWindowFlag(Qt::FramelessWindowHint);...

    Qt天气项目

    一、项目的创建以及基础工作的准备

    1.设置窗口的背景图片的添加

    在这里插入图片描述

    2.标签的设置

    在这里插入图片描述

    3.窗口中线条的设置

    在这里插入图片描述

    4.窗口高度以及宽度的设置

    在这里插入图片描述

    5.使用代码设置窗口的部分属性

    setWindowFlag(Qt::FramelessWindowHint);

    设置窗口为没有边框,没有标题栏

    setFixedSize(width(),height());

    设置窗口为固定的大小,也就是使用自己设置的大小,用户不能修改窗口大小

    总结:

    1 创建项目时选择QWidget

    2 Ui设置时使用部件Widget将这个窗口覆盖

    3 添加关于天气的资源文件,包括背景图片、天气变化时需要的icon,比如大雨、小雨、天晴等

    二、关闭窗口以及拖动窗口

    1.关闭窗口

    exitMenu=new QMenu(this);

    exitAct=new QAction(this);

    exitAct->setText(u8"退出");

    exitAct->setIcon(QIcon(":/weatherIco/close.ico"));

    exitMenu->addAction(exitAct); connect(exitAct,SIGNAL(triggered(bool)),this,SLOT(slot_exitApp()));

    1 因为窗口上不需要多余的按钮,所以就设置一个可以弹出的菜单来实现窗口的退出功能

    2 创建菜单对象和动作的对象

    3 设置退出菜单的名称以及绑定图标

    4 将动作添加到菜单对象上

    5 将右键点击作为信号,发出者为exitAct,槽时应用程序窗口,槽要实现的功能时退出

    6 实现槽函数

    qApp->exit(0);

    但要注意的是声明的时候应该是私有的,一般槽函数都是私有的( private slots: )

    2.拖动窗口

    mPos=event->globalPos()-this->pos();

    mPos是一个成员变量,类型为QPoint

    move(event->globalPos()-mPos);

    总结:

    1 关闭和拖动都涉及到了鼠标事件,所以首先要处理鼠标事件
    exitMenu->exec(QCursor::pos());
    event->accept();

    上两行代码分析:调用QMenu类中的exec函数将鼠标定位到当前的位置,并对这个接收到的标志进行设置

    2 拖动窗口代码的分析:将全局坐标也就是相当于鼠标所在的坐标减去窗口的坐标,得到一个差值

    3 鼠标移动到另一个位置的时候,再用这个位置的全局坐标减去所得到的差值,再次得到一个差值,这个差值就是窗口所需要移动的距离

    三、基础控件添加和网格布局

    1.控件的添加
    在这里插入图片描述
    在这里插入图片描述

    上面的是网格布局的控件以及添加以后的效果

    这是标签的控件以及效果,但要注意的是两个标签之间的合并,两个标签之间合并的时候另一个标签里面不要由内容

    展开全文
  • Qt quick项目中组合不同的qml文件
                   

    使用qml定义GUI, 我们可以将整个GUI拆分成不同的部分。一个main.qml文件表示整个布局,其他qml文件定义部分的GUI。

    我创建了一个assemble工程,main.qml文件如下:

    import QtQuick 2.1import QtQuick.Window 2.1import QtQuick.Controls 1.1import QtQuick.XmlListModel 2.0Window {    title: "Assemble Demo"    width: 538 + frame.margins * 2    height: 360 + frame.margins * 2    ToolBar {        id: toolbar        width: parent.width        Text {            text: "Assemble Demo"        }    }    SystemPalette {id: syspal}    color: syspal.window    Rectangle {        id: r1        anchors.top: toolbar.bottom        anchors.right: parent.right        anchors.left: parent.left        anchors.bottom:  parent.bottom        anchors.margins: 16        TabView {            id:frame            focus:true            property int margins: Qt.platform.os === "osx" ? 16 : 0            height: 120            anchors.right: parent.right            anchors.left: parent.left            anchors.margins: margins            Tab {                title: "Tab1"                source: "menu.qml"            }            Tab {                title: "Tab2"                source: "menu.qml"            }        }    }}


    注意,上面的两个Tab元素中,我用source属性引用了外部的men.qml文件。

    下面是menu.qml文件:

    import QtQuick 2.0import QtQuick.Controls 1.1Rectangle {    Button {        id: createMenu        text: "Create"    }    Button {        id: loadMenu        anchors.left: createMenu.right        text: "Load"    }}

    同时,需要将两个qml文件添加到resources.qrc中。

    现在看一下截屏:




               

    再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

    展开全文
  • 先来看下整体效果截图: 有问题可以加我QQ:2273864757 进行交流学习 1.1 整体结构 ...并调用合并函数进行合并。 2.2 界面搭建 界面抽象为一个4*4的二维矩阵,我们采用Qt自带的方法进行样式...

    先来看下整体效果截图:

    有问题可以加我QQ:2273864757 进行交流学习

    1.1 整体结构

    • 将整个界面抽象为一个4*4的二维矩阵,矩阵存储当前格的数字,若为空则置0。
    • 随机在空白区域产生一个随机数,随着得分的不断增加,产生大数字的概率逐渐增大。
    • 根据按键输入,读入方向键。并调用合并函数进行合并。

    2.2 界面搭建

    界面抽象为一个4*4的二维矩阵,我们采用Qt自带的方法进行样式和风格进行设置:

     // set default size
        resize(650,450);
    
        // create the main layout
        mainLayout = new QVBoxLayout();
        setLayout(mainLayout);
    
        // will be created in drawBoard()
        boardLayout = NULL;
    
        // create the game and register as observer
        game = new Game(4);
        game->registerObserver(this);
    
        // create the gui board and draw it
        gui_board.resize(game->getGameBoard()->getDimension());
        for (int i = 0; i < game->getGameBoard()->getDimension(); ++i)
            gui_board[i].resize(game->getGameBoard()->getDimension());
        for (int i = 0; i < game->getGameBoard()->getDimension(); ++i)
            for (int j = 0; j < game->getGameBoard()->getDimension(); ++j)
                gui_board[i][j] = NULL;
        drawBoard();
    
        // create the score widget and add it to the board
        score = new QLabel(QString("SCORE: %1").arg(game->getScore()));
        score->setStyleSheet("QLabel { color: rgb(235,224,214); font: 16pt; }");
        score->setFixedHeight(50);
        mainLayout->insertWidget(1, score, 0, Qt::AlignRight);
    
        // style sheet of the board
        setStyleSheet("QGameBoard { background-color: rgb(187,173,160) }");
    
        connect(gameOverWindow.getResetBtn(), SIGNAL(clicked()), this, SLOT(resetGame()));

    2.3 键盘按钮事件处理

    在游戏开始之后,键盘事件分为上、下、左、右进行操作,对各个格子的数字进行移动。

    void QGameBoard::keyPressEvent(QKeyEvent *event)
    {
        switch (event->key()) {
        case Qt::Key_Up:
            game->move(UP);
            break;
        case Qt::Key_Left:
            game->move(LEFT);
            break;
        case Qt::Key_Right:
            game->move(RIGHT);
            break;
        case Qt::Key_Down:
            game->move(DOWN);
            break;
        }
    }
    
    
    //*************************************************************
    void Board::move(Direction direction)
    {
        Board pre_move_board(*this);
    
        prepareForNextMove();
    
        switch (direction) {
        case UP:
            for (int i = 0; i < dimension; ++i)
                for (int j = 0; j < dimension; ++j)
                    moveVertically(i,j,UP);
            break;
        case DOWN:
            for (int i = dimension-1; i >= 0; --i)
                for (int j = 0; j < dimension; ++j)
                    moveVertically(i,j,DOWN);
            break;
        case LEFT:
            for (int i = 0; i < dimension; ++i)
                for (int j = 0; j < dimension; ++j)
                    moveHorizontally(i,j,LEFT);
            break;
        case RIGHT:
            for (int i = 0; i < dimension; ++i)
                for (int j = dimension-1; j >= 0; --j)
                    moveHorizontally(i,j, RIGHT);
        }
    
        // if the board has changed (and there was no tile collision), place a new tile
        if (changed(pre_move_board) /*&& !tileCollisionLastRound*/) {
            QVector<int> newpos = freePosition();
            board[newpos[0]][newpos[1]] = new Tile();
        }
    
        notifyObservers();
    }

    2.4 界面绘制与得分统计

    通过键盘移动事件操作来控制游戏,在操作过程中对得分进行统计,并在界面进行显示;

    void QGameBoard::drawBoard()
    {
        delete boardLayout;
        boardLayout = new QGridLayout();
        for (int i = 0; i < game->getGameBoard()->getDimension(); ++i) {
            for (int j = 0; j < game->getGameBoard()->getDimension(); ++j) {
                delete gui_board[i][j];
                gui_board[i][j] = new QTile(game->getGameBoard()->getTile(i,j));
                boardLayout->addWidget(gui_board[i][j], i, j);
                gui_board[i][j]->draw();
            }
        }
        mainLayout->insertLayout(0, boardLayout);
    }
    
    
    void QGameBoard::resetGame()
    {
        game->restart();
        drawBoard();
        score->setText(QString("SCORE: %1").arg(game->getScore()));
        gameOverWindow.hide();
    }

     

    展开全文
  • Qt编写项目作品27-多线程文件传输

    千次阅读 2020-05-10 15:16:52
    一、功能特点 多线程收发文件,支持加密传输。 接收端支持监听端口接收文件和主动连接服务器接收文件两种方式。...发送端支持对包进行合并发送。 可指定目录对客户端发来的请求文件进行搜索。 每个功能独

    一、功能特点

    1. 多线程收发文件,支持加密传输。
    2. 接收端支持监听端口接收文件和主动连接服务器接收文件两种方式。
    3. 按照 文件开始符+文件大小+文件内容+文件结束符 逐个分包接收。
    4. 可对接收的加密过的文件包进行解密输出。
    5. 如果采用连接服务器方式接收文件可指定请求文件。
    6. 接收端请求文件的形式可以作为通用的程序升级方案。
    7. 进度条实时更新收发文件的进度。
    8. 发送端可设置每个包最大大小即切片分包数量。
    9. 发送端可对文件的每个包进行加密传输。
    10. 发送端支持对包进行合并发送。
    11. 可指定目录对客户端发来的请求文件进行搜索。
    12. 每个功能独立的一个类,接口清晰友好,使用方便。
    13. 支持任意Qt版本、任意系统、任意编译器。

    二、效果图

    在这里插入图片描述

    三、体验地址

    1. 体验地址:https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A 提取码:o05q 文件名:bin_tcpfile.zip
    2. 国内站点:https://gitee.com/feiyangqingyun
    3. 国际站点:https://github.com/feiyangqingyun
    4. 个人主页:https://blog.csdn.net/feiyangqingyun
    5. 知乎主页:https://www.zhihu.com/people/feiyangqingyun/
    展开全文
  • QSS总结以及最近做的Qt项目

    千次阅读 2017-11-07 23:19:56
    附:QSS总结以及最近做的Qt项目 阅读目录 什么是QSSQSS在Qt程序中的使用办法QSS的语法规则QSS的选择器类型QSS子控件QSS伪状态QSS级联与冲突QSS实际应用中要注意的地方Qt开发的程序的案例 回到...
  • 文章目录1 项目运行结果1.1 主界面2 项目源码结构目录 详细的源码打包下载地址: 也可以关注我的微信公众号:不止编程,回复SpreadSheet获取。 1 项目运行结果 1.1 主界面 2 项目源码结构目录
  • 参与 Qt 文档翻译项目

    2017-11-14 02:44:00
    以前我曾经在 sourceforge.net 上面开启过一个翻译项目,而今天,我们试图完成一个真正的文档工程:其结果是提交到 Qt 的代码库,让全世界所有人都阅读到你翻译的代码。 Qt 的源代码使用 git 作为版本控制系统...
  • 在实际的项目中,除了需要掌握Qt开发框架本身,还需要掌握一些开发工具。这些工具能起到事半功倍的效果,甚至某些工具是开发不可或缺的。下面笔者就介绍一些常用的开发工具的用法及下载地址,希望对缺少实际项目经验...
  • 1、Qt: C++图形用户界面应用程序框架 是一个 跨平台 的; --MFC不能跨平台 一定程度上简化了内存回收机制 可以进行嵌入式开发 2、QT: 成功案例 Linux桌面环境KDE就是是用QT做的。  Linux桌面环境KDE  WPS ...
  • QT-写QT程序,每人分别负责编写不同部分,那么怎么将其合并在一起吗 请问下一下道友 ,在学习QT和C++的时候,出现两个人分别编写不同的模块,怎样将两个人编写的程序合并在一起吗?怎样才能实现嘞? ...
  • 找到程序debug中的.exe文件 ...依赖文件合并 这个时候运行软件,发现可以正常运行 如果仍然弹出缺乏.dll的提示,不要慌,自己动手去文件夹里找找,因为个别.dll文件Qt确实无能为力 打包软件为一个图标 这么多的依.
  • 项目名称上右击,add new 添加以上文件 标注的随意选择一个,这里做例子选择widget;添加完毕之后,如下所示。 然后两个ui文件上分别添加控件(这里添加pushbutton与lineEdit和label作为例子)如下图 mainWindow...
  • 1、首先在 Visual Studio 里创建一个 “Qt Designer Custom Widget” 项目,没有的话先装 Qt 扩展,这里不多赘述。 由于本文是针对“在同一个项目中编写多个自定义组件”,所以后面的命名可供参考,尽量不要以...
  • QT

    2020-12-02 14:06:05
    QT 文章目录QT一 视图类1 关于窗口的函数2 界面布局3 widget改变颜色4 splitter5 TreeWidget6 绘图drawImage7 imageimage实现放大缩小位移8 QMainWindow1 菜单栏2 工具栏3状态栏4 铆接部件5 核心部件6 资源文件7 ...
  • 一般一个大型的项目,代码的运行效率要求较高,一般需要秒级响应,甚至毫秒级。 1.2 建议使用命名空间::的形式来访问该命名空间中的变量和函数,这样可以减少把该命名空间中所有的东西都导入到当前项目中,有利于...
  • uint BaseSerial::MAKE_TWO( const char& a, const char& b) const { //转换为无符号,除去符号位的影响 uchar x = a; uchar y = b; uint ix = x; uint iy = y; uint value = ix<...}
  • 选择“Qt -&amp;gt; Qt Designer Form”添加新的布局文件; 新建两个.ui文件 dialog1.ui,dialog2.ui 记住要修改一下objectName的内容,不然所有的objectName的内容都为Dialog就不好了 以dialog1为例 添加...
  • Qt(C++)项目中使用 Basler 工业相机(2 参数设置)上一篇博客介绍了 pylon 的基本结构和如何枚举系统中的相机。这一篇主要讲讲如何设置相机的各个参数。在设置相机参数之前,先要获取相机对象。Pylon::CTlFactory ...
  • 总第39篇 本文主要梳理总结了在Qt项目开发过程中,某些特殊场合绘制只有两个圆角矩形的... 在Qt项目中,绘制只有两个圆角的矩形,可以使用QPainterPath合并addRoundedRect和addRect的path形成目标path,再使用pa...
  • 本人在2020-06-14凌晨完成了一个基于QT的TLE下载、合并及分析时间的带界面工具,萌生了想要把该项目上传github开源的想法。 其中还是遇到了一些问题,将问题与解决方式记录下来以自省或给他人一些便利。 开发环境:...
  • 新功能(within existing modules)Qt 3DQt CoreQt GUIQt 位置Qt 多媒体Qt 网络Qt QMLQt QuickQt Quick Controls 2Qt SerialBusQt WebEngineQt WebSocketsQDoc03. 平台变更AndroidWayland嵌入式Linux(eglfs)04. 新...
  • 因此在Ubuntu上安装OpenCV和QT GUI库再加上个Qt Creator,作为我们项目的开发环境。1 安装QtQT GUI库是Ubuntu自带的,查看版本: 说明Qt已经安装了,版本为5.4.1。2.安装Qt Creator在Linux下,Qt Creator算是一个...
  • 总第21篇 ...本文将详细讲解自己在项目过程中遇到的粘粘包问题,并讨论TCP传输过程中粘包问题产生的原因、解决方法,最后给出相应的QT项目解决粘包问题的代码,以供大家参考。 1.问题的产生 在我的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,991
精华内容 1,996
关键字:

qt合并项目