国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

[編程語言][C++][Qt]單獨添加UI文件

這篇具有很好參考價值的文章主要介紹了[編程語言][C++][Qt]單獨添加UI文件。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

問題描述

不知什么原因,Qt Creator并不是很完美很智能。當先寫好界面類的頭文件和源代碼文件后,我們再添加用于可視化界面設計的UI文件時,會出現一些問題。

解決方案

1. 添加UI文件

qt單獨編譯ui文件,編程語言,ui,qt,c++
qt單獨編譯ui文件,編程語言,ui,qt,c++
qt單獨編譯ui文件,編程語言,ui,qt,c++
qt單獨編譯ui文件,編程語言,ui,qt,c++
qt單獨編譯ui文件,編程語言,ui,qt,c++
當使用CMake管理項目時,CMake會讀取CMakeLists.txt文件來確定各種項目設置。需要把MainWindow.ui包含進項目時,在CMakeLists.txt中添加入上圖的第21行時,才能真正實現。

2. 與對應的界面類進行關聯

UI文件MainWindow.ui對應的類文件為MainWindow.hMainWindow.cpp文件。

// MainWindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE						//**********
namespace Ui { class MainWindow; }		//         *
QT_END_NAMESPACE						//**********

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:								//**********
    Ui::MainWindow * ui;				//       ***
};										//**********
#endif // MAINWINDOW_H
// MainWindow.cpp
#include "MainWindow.h"
#include "./ui_MainWindow.h"							//**********

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::MainWindow)		//**********
{
}

MainWindow::~MainWindow()
{
}

用注釋標注過的地方即為需要更改的地方。

雖然默認的UI文件是個空的界面,但道理,這個時候應該已經使用UI文件,并可以構建項目了。但若此時真的構建項目,那么會出現下面的編譯時錯誤。qt單獨編譯ui文件,編程語言,ui,qt,c++
通過錯誤信息,我們不難看出是我們新包含的./ui_MainWindow.h頭文件不合適。此頭文件是由Qt Creator自動創(chuàng)建的,而且也沒有自動包含進項目中。在筆者的磁盤上項目的路徑是E:\Project\Qt\Demo018,而這個頭文件的位置為E:\Project\Qt\build-Demo018-Desktop_Qt_6_4_0_MinGW_64_bit-Debug\Demo018_autogen\include\ui_MainWindow.h。如果我們打開這個頭文件則如下所示:

/********************************************************************************
** Form generated from reading UI file 'MainWindow.ui'
**
** Created by: Qt User Interface Compiler version 6.4.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

#ifndef UI_MAINWINDOW_H
#define UI_MAINWINDOW_H

#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QWidget>

QT_BEGIN_NAMESPACE

class Ui_Form
{
public:

    void setupUi(QWidget *Form)
    {
        if (Form->objectName().isEmpty())
            Form->setObjectName("Form");
        Form->resize(400, 300);

        retranslateUi(Form);

        QMetaObject::connectSlotsByName(Form);
    } // setupUi

    void retranslateUi(QWidget *Form)
    {
        Form->setWindowTitle(QCoreApplication::translate("Form", "Form", nullptr));
    } // retranslateUi

};

namespace Ui {
    class Form: public Ui_Form {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_MAINWINDOW_H

不難看出其中的問題:ui_MainWindow.h頭文件中提到的都是Form,而不是我們在源代碼文件MainWindow.cpp中提到的MainWindow。在看這個頭文件的注釋中的這一句Form generated from reading UI file 'MainWindow.ui',我們可以推斷出錯誤的根源是在UI文件MainWindow.ui中。

我們以普通文本編輯器模式打開MainWidnow.ui文件,如下圖所示:

<ui version="4.0" >
 <author></author>
 <comment></comment>
 <exportmacro></exportmacro>
 <class>Form</class>
 <widget class="QWidget" name="Form" >
  <property name="geometry" >
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>300</height>
   </rect>
  </property>
  <property name="windowTitle" >
   <string>Form</string>
  </property>
 </widget>
 <pixmapfunction></pixmapfunction>
 <connections/>
</ui>

在文件的第4行為<class>Form</class>,而在第5為<widget class="QWidget" name="Form" >這才是我們無法編譯的真正原因?。?!

3. 修改UI文件

MainWidnow.ui文件第4行中的Form改為我們使用的MainWindow。如下所示:

<ui version="4.0" >
 <author></author>
 <comment></comment>
 <exportmacro></exportmacro>
 <class>MainWindow</class>
 <widget class="QWidget" name="MainWindow" >
  <property name="geometry" >
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>300</height>
   </rect>
  </property>
  <property name="windowTitle" >
   <string>Form</string>
  </property>
 </widget>
 <pixmapfunction></pixmapfunction>
 <connections/>
</ui>

此時,就可以成功構建項目了。運行項目后,如下圖所示:
qt單獨編譯ui文件,編程語言,ui,qt,c++
細心的同學可以發(fā)現,我們設置的窗口的標題是Form,而不是Demo018。而在MainWidnow.ui中我們確實看到了相關的代碼:

  <property name="windowTitle" >
   <string>Form</string>
  </property>

以界面編輯器方式打開這個文件后,在屬性欄中我們也找到了相關設置:
qt單獨編譯ui文件,編程語言,ui,qt,c++
這說明,界面類并沒有從UI文件中讀取界面設計。

4. 設置界面類讀取UI文件

#include "MainWindow.h"
#include "./ui_MainWindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);		//**********
}

MainWindow::~MainWindow()
{
}

在類MainWindow的構造函數中添加一行ui->setupUi(this);
此時構建項目并運行,如下圖所示:
qt單獨編譯ui文件,編程語言,ui,qt,c++
此圖說明,至此,我們才真正地將UI文件添加進項目中。文章來源地址http://www.zghlxwxcb.cn/news/detail-734553.html

總結

  1. 添加UI文件;
  2. 將UI文件與界面類進行關聯;
  3. 修改UI文件中還未自動更正過來地信息;
  4. 設置界面類讀取UI文件。

到了這里,關于[編程語言][C++][Qt]單獨添加UI文件的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • [QT編程系列-39]:用戶界面UI - 樣式表QSS與樣式文件快速入門

    目錄 1. 概述 2. CSS 3. QSS示例 4. QT樣式表文件使用方法與步驟 5. QT內置樣式 6. QT常見基本樣式 Qt提供了一種稱為Qt樣式表(Qt Style Sheets)的機制,可以用于 自定義和美化Qt應用程序的用戶界面(UI) 。 使用Qt樣式表,你可以通過類似 CSS 的語法來定義UI元素的外觀和布局,包括顏

    2024年02月04日
    瀏覽(29)
  • C語言——多文件編程

    C語言——多文件編程

    把函數聲明放在頭文件xxx.h中,在主函數中包含相應頭文件 在頭文件對應的xxx.c中實現xxx.h聲明的函數 當一個項目比較大時,往往都是分文件,這時候有可能不小心把同一個頭文件 include 多次,或者頭文件嵌套包含。 為了避免同一個文件被include多次,C/C++中有兩種方式。 方法

    2024年02月10日
    瀏覽(43)
  • C語言編程之文件操作

    C語言編程之文件操作

    ? 文件(File) 是程序設計中的一個重要的概念。所謂“文件”一般指存儲在外部介質上 數據的集合 。一批數據是以文件的形式存放在外部介質(如磁盤)上。 操作系統(tǒng) 是 以文件為單位 對數據進行管理,也就是說,如果想找存在外部介質上的數據,必須先按 文件名 找到所

    2024年02月07日
    瀏覽(25)
  • Qt Visual Studio添加Qt ui和編譯注意事項

    Qt Visual Studio添加Qt ui和編譯注意事項

    工程中需要新的界面 VS中新建Qt的ui文件,然后需要生成對應的.cpp 和 .h 文件 生成對應的三個文件.ui, xxx. cpp, xxx.h 但是此時在QtWidgetsTestClass.h 里面,包含了#include “ui_QtWidgetsTestClass.h”。 會提示找不到該文件。該文件的生成,需要使用到Qt的uic.exe程序 1.通過配置ui_QtWidgetsTest

    2024年02月02日
    瀏覽(32)
  • QT添加使用圖片與UI資源

    QT添加使用圖片與UI資源

    1.1 添加新文件 1.2 添加QT - QT Resources File 【UI資源文件】 1.3 命名資源包名稱 并 添加到項目文件 1.4 .pro 文件發(fā)生變化 += art.qrc 1.5 點擊qrc文件,添加現有文件 - 添加進去的圖片文件可以進行正常引用。 1.6 修改樣式表,正常添加圖片即可 2.1 添加新文件 2.2 添加 QT Designer Form 設計

    2024年01月17日
    瀏覽(27)
  • C語言編程之.H文件與.C文件的關系

    在C語言中,通常將程序的源代碼分為.h文件和.c文件兩類: .h文件(也稱頭文件)通常包含程序所需的函數、變量、類型和宏的聲明,以便在其他文件中使用。 .c文件則包含這些函數、變量、類型和宏的實現或定義。 因此,可以將.h文件看作是對應的.c文件的接口或者聲明文件

    2024年02月16日
    瀏覽(22)
  • C語言編程技巧 全局變量在多個c文件中公用的方法

    在使用C語言編寫程序時,經常會遇到這樣的情況:我們希望在頭文件中定義一個全局變量,并將其包含在兩個不同的C文件中,以便這個全局變量可以在這兩個文件中共享。舉個例子,假設項目文件夾\\\"project\\\"下有三個文件:main.c、common.c和common.h。在這種情況下,我們希望聲明

    2024年02月14日
    瀏覽(19)
  • VS QT——ui不顯示新添加成員(控件)||代碼無提示

    VS QT——ui不顯示新添加成員(控件)||代碼無提示

    場景1:新建項目,在ui里編輯之后,新添加的控件不顯示代碼提示。 場景2:成員 ui? 報錯 不允許使用不完整的類型 ?因為是剛開始學,花了兩三天才找到解決辦法。 網上方法:?重新編譯 ui文件 + 重新掃描解決方案 (但是我這里還是無法解決) 根本原因:缺少xxx.ui 的頭文

    2024年02月13日
    瀏覽(27)
  • QT學習記錄(三)通過ui和代碼的方式往窗口添加組件

    QT學習記錄(三)通過ui和代碼的方式往窗口添加組件

    本文是b站教程的https://www.bilibili.com/video/BV1g4411H78N?p=5vd_source=a3efe214b8a2ba185e92e79cb6d6321b的筆記,外加自己的一些其他想法。如有侵權請聯系。如有錯誤請指正。 通過拖拽,把一個按鈕和一個label拖進去了。 新建了一個按鈕對象,并通過setParent指定了父親就是當前的主窗口。 當

    2024年02月07日
    瀏覽(28)
  • Qt學習筆記5---如何在Qt中添加資源文件

    Qt學習筆記5---如何在Qt中添加資源文件

    ? ? ? ? ? 前言: 在我們給Qt加上圖片的時候,可以用本地資源添加的方式,但是此方法代碼用的只能是本地資源,不好共享。那么我們可以把資源文件添加在Qt中,這樣就不會出現這種問題啦! 第一步:在本地復制你想用的資源文件,點開項目的“在Explorer中顯示”,粘貼

    2024年02月16日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包