C++ Visual studio可以';t导入Qt库

C++ Visual studio可以';t导入Qt库,c++,visual-studio,qt,C++,Visual Studio,Qt,我所做的是:我通过uic工具将Qt设计器中的XML文件转换为头文件,并尝试在VS2019和VS2017中打开并运行该文件 问题是: VS2019/2017给了我错误(E0020、E1696,其他人可能也有),我认为VS无法导入Qt库,即使我安装了 “Qt Visual Studio工具”,我现在不知道如何修复它 错误如下所示: E1696:无法打开文件“source”:“QtWidgets/QFrame”(以及其他QtWidget、QtCore和QtGui库) E0020:未定义标识符“QTp

我所做的是:我通过
uic
工具将Qt设计器中的XML文件转换为头文件,并尝试在VS2019和VS2017中打开并运行该文件

问题是:

  • VS2019/2017给了我错误(E0020、E1696,其他人可能也有),我认为VS无法导入Qt库,即使我安装了 “Qt Visual Studio工具”,我现在不知道如何修复它
  • 错误如下所示:

    • E1696:无法打开文件“source”:“QtWidgets/QFrame”(以及其他QtWidget、QtCore和QtGui库)

    • E0020:未定义标识符“QTputton”(以及“QtLabel”、“QtScrollbar”等其他小部件)

    • 第二个问题是:当第一个问题被修复时,如何运行从该头文件创建窗口的代码?在Qt设计器中,我只需按下“run”按钮,它就可以运行
      main
      功能。它是否与创建的头文件和Qt Designer中的
      main
      的工作方式相同
    头文件(通过
    uic
    创建):

    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 slots:
        void on_upButton_clicked();
    
        void on_rightButton_clicked();
    
        void on_downButton_clicked();
    
        void on_leftButton_clicked();
    
        void on_waitButton_clicked();
    
        void on_deleteButton_clicked();
    
        void on_selectColonyButton_clicked();
    
        void on_startButton_clicked();
    
        void on_abortButton_clicked();
    
        void on_singleStepButton_clicked();
    
        void on_autoButton_clicked();
    
        void on_pauseButton_clicked();
    
    private:
        Ui::MainWindow *ui;
    };
    #endif // MAINWINDOW_H
    
    
    \ifndef主窗口
    #定义主窗口
    #包括
    QT_开始名称空间
    命名空间Ui{class MainWindow;}
    QT_END_名称空间
    类主窗口:公共QMainWindow
    {
    Q_对象
    公众:
    主窗口(QWidget*parent=nullptr);
    ~main窗口();
    专用插槽:
    单击按钮时无效();
    在右按钮上无效单击();
    单击按钮时无效();
    单击左按钮时无效();
    单击按钮时无效();
    单击按钮时无效();
    单击鼠标左键时无效();
    单击开始按钮时无效();
    单击“中止”按钮时无效();
    单击单步按钮时无效();
    单击自动按钮时无效();
    单击按钮时无效();
    私人:
    Ui::MainWindow*Ui;
    };
    #endif//main窗口
    

    如果需要进一步的信息,我很乐意提供帮助。

    我每天都使用Visual Studio 2019和Qt,这样我就可以告诉您它是有效的。尽管如此,我不确定我们是否能够在不看到至少一些错误的情况下提供帮助。@drescherjm嗯,我确信它应该有效,但不幸的是,对我来说不行。我应该重新安装吗?@drescherjm我可以添加一些翻译错误代码,但我不能复制它们,因为它们是用我的母语编写的。你告诉VS Qt库和头文件在哪里了吗?@ChrisMM-Uhm,这可能是问题所在。我安装了“QtVisualStudioTools”,但我必须告诉VS它们在哪里吗?我想,如果通过VS扩展安装它,VS应该已经知道它们在哪里了。我每天都使用VisualStudio2019和Qt,所以我可以告诉你它可以工作。尽管如此,我不确定我们是否能够在不看到至少一些错误的情况下提供帮助。@drescherjm嗯,我确信它应该有效,但不幸的是,对我来说不行。我应该重新安装吗?@drescherjm我可以添加一些翻译错误代码,但我不能复制它们,因为它们是用我的母语编写的。你告诉VS Qt库和头文件在哪里了吗?@ChrisMM-Uhm,这可能是问题所在。我安装了“QtVisualStudioTools”,但我必须告诉VS它们在哪里吗?我想,如果通过VS扩展安装它,VS应该已经知道它们在哪里了
    #include "mainwindow.h"
    
    #include <QApplication>
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        MainWindow w;
        w.show();
        return a.exec();
    }
    
    
    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    
    #include "QMessageBox"
    
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
        , ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    
    void MainWindow::on_upButton_clicked()
    {
        QMessageBox::information(this, "button", "up");
    }
    
    void MainWindow::on_rightButton_clicked()
    {
        QMessageBox::information(this, "button", "right");
    }
    
    void MainWindow::on_downButton_clicked()
    {
        QMessageBox::information(this, "button", "down");
    }
    
    void MainWindow::on_leftButton_clicked()
    {
        QMessageBox::information(this, "button", "left");
    }
    
    void MainWindow::on_waitButton_clicked()
    {
        QMessageBox::information(this, "button", "wait");
    }
    
    void MainWindow::on_deleteButton_clicked()
    {
        QMessageBox::information(this, "button", "delete");
    }
    
    void MainWindow::on_selectColonyButton_clicked()
    {
        QMessageBox::information(this, "button", ui->selectColonyButton->text());
    }
    
    void MainWindow::on_startButton_clicked()
    {
        QMessageBox::information(this, "button", ui->startButton->text());
    }
    
    void MainWindow::on_abortButton_clicked()
    {
        QMessageBox::information(this, "button", ui->abortButton->text());
    }
    
    void MainWindow::on_singleStepButton_clicked()
    {
        QMessageBox::information(this, "button", ui->singleStepButton->text());
    }
    
    void MainWindow::on_autoButton_clicked()
    {
        QMessageBox::information(this, "button", ui->autoButton->text());
    }
    
    void MainWindow::on_pauseButton_clicked()
    {
        QMessageBox::information(this, "button", ui->pauseButton->text());
    }
    
    
    #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 slots:
        void on_upButton_clicked();
    
        void on_rightButton_clicked();
    
        void on_downButton_clicked();
    
        void on_leftButton_clicked();
    
        void on_waitButton_clicked();
    
        void on_deleteButton_clicked();
    
        void on_selectColonyButton_clicked();
    
        void on_startButton_clicked();
    
        void on_abortButton_clicked();
    
        void on_singleStepButton_clicked();
    
        void on_autoButton_clicked();
    
        void on_pauseButton_clicked();
    
    private:
        Ui::MainWindow *ui;
    };
    #endif // MAINWINDOW_H