Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在visual studio上编译qt示例时出现链接错误 我在QC++ 4版第二版Visual C++ 2010中编译QT示例时遇到了问题。由于Qt VisualStudio插件不与Express版一起工作,我自己添加了库依赖项:QTMADIN .LIB QTCORDE4.LIB QTUGUD4.LIB,也可以编译一个示例代码“hello,qt!”没有错误。 我的项目包含两个.cpp文件和一个头文件: findDialog.h: #ifndef FINDDIALOG_H #define FINDDIALOG_H #include <QtGui\qdialog.h> class QCheckBox; class QLabel; class QLineEdit; class QPushButton; class findDialog : public QDialog { Q_OBJECT public: findDialog(QWidget* parent = 0); signals: void findNext(const QString &str , Qt::CaseSensitivity cs); void findPrevious(const QString &str , Qt::CaseSensitivity cs); private slots: void findClicked(); void enableFindButton(const QString& text); private: QLabel* label; QLineEdit* lineEdit; QCheckBox* caseCheckBox; QCheckBox* backwardCheckBox; QPushButton* findButton; QPushButton* closeButton; }; #endif \ifndef FINDDIALOG\H #定义FINDDIALOG_H #包括 QCheckBox类; 类QLabel; 类QLineEdit; 类按钮; 类findDialog:公共QDialog { Q_对象 公众: findDialog(QWidget*parent=0); 信号: void findNext(常量QString&str,Qt::CaseSensitivity cs); void findPrevious(const QString&str,Qt::CaseSensitivity cs); 专用插槽: void findClicked(); void enableFindButton(常量QString&text); 私人: QLabel*标签; QLineEdit*lineEdit; QCheckBox*案例复选框; QCheckBox*backwardCheckBox; QPushButton*findButton; QPushButton*关闭按钮; }; #恩迪夫_C++_Visual Studio 2010_Qt - Fatal编程技术网

在visual studio上编译qt示例时出现链接错误 我在QC++ 4版第二版Visual C++ 2010中编译QT示例时遇到了问题。由于Qt VisualStudio插件不与Express版一起工作,我自己添加了库依赖项:QTMADIN .LIB QTCORDE4.LIB QTUGUD4.LIB,也可以编译一个示例代码“hello,qt!”没有错误。 我的项目包含两个.cpp文件和一个头文件: findDialog.h: #ifndef FINDDIALOG_H #define FINDDIALOG_H #include <QtGui\qdialog.h> class QCheckBox; class QLabel; class QLineEdit; class QPushButton; class findDialog : public QDialog { Q_OBJECT public: findDialog(QWidget* parent = 0); signals: void findNext(const QString &str , Qt::CaseSensitivity cs); void findPrevious(const QString &str , Qt::CaseSensitivity cs); private slots: void findClicked(); void enableFindButton(const QString& text); private: QLabel* label; QLineEdit* lineEdit; QCheckBox* caseCheckBox; QCheckBox* backwardCheckBox; QPushButton* findButton; QPushButton* closeButton; }; #endif \ifndef FINDDIALOG\H #定义FINDDIALOG_H #包括 QCheckBox类; 类QLabel; 类QLineEdit; 类按钮; 类findDialog:公共QDialog { Q_对象 公众: findDialog(QWidget*parent=0); 信号: void findNext(常量QString&str,Qt::CaseSensitivity cs); void findPrevious(const QString&str,Qt::CaseSensitivity cs); 专用插槽: void findClicked(); void enableFindButton(常量QString&text); 私人: QLabel*标签; QLineEdit*lineEdit; QCheckBox*案例复选框; QCheckBox*backwardCheckBox; QPushButton*findButton; QPushButton*关闭按钮; }; #恩迪夫

在visual studio上编译qt示例时出现链接错误 我在QC++ 4版第二版Visual C++ 2010中编译QT示例时遇到了问题。由于Qt VisualStudio插件不与Express版一起工作,我自己添加了库依赖项:QTMADIN .LIB QTCORDE4.LIB QTUGUD4.LIB,也可以编译一个示例代码“hello,qt!”没有错误。 我的项目包含两个.cpp文件和一个头文件: findDialog.h: #ifndef FINDDIALOG_H #define FINDDIALOG_H #include <QtGui\qdialog.h> class QCheckBox; class QLabel; class QLineEdit; class QPushButton; class findDialog : public QDialog { Q_OBJECT public: findDialog(QWidget* parent = 0); signals: void findNext(const QString &str , Qt::CaseSensitivity cs); void findPrevious(const QString &str , Qt::CaseSensitivity cs); private slots: void findClicked(); void enableFindButton(const QString& text); private: QLabel* label; QLineEdit* lineEdit; QCheckBox* caseCheckBox; QCheckBox* backwardCheckBox; QPushButton* findButton; QPushButton* closeButton; }; #endif \ifndef FINDDIALOG\H #定义FINDDIALOG_H #包括 QCheckBox类; 类QLabel; 类QLineEdit; 类按钮; 类findDialog:公共QDialog { Q_对象 公众: findDialog(QWidget*parent=0); 信号: void findNext(常量QString&str,Qt::CaseSensitivity cs); void findPrevious(const QString&str,Qt::CaseSensitivity cs); 专用插槽: void findClicked(); void enableFindButton(常量QString&text); 私人: QLabel*标签; QLineEdit*lineEdit; QCheckBox*案例复选框; QCheckBox*backwardCheckBox; QPushButton*findButton; QPushButton*关闭按钮; }; #恩迪夫,c++,visual-studio-2010,qt,C++,Visual Studio 2010,Qt,findDialog.cpp: #include <QtGui\QtGui> #include "findDialog.h" findDialog::findDialog(QWidget* parent) : QDialog(parent) { label = new QLabel(tr("Find &what:")); lineEdit = new QLineEdit; label->setBuddy(lineEdit); cas

findDialog.cpp:

#include <QtGui\QtGui>
#include "findDialog.h"


findDialog::findDialog(QWidget* parent) : QDialog(parent)
{
    label = new QLabel(tr("Find &what:"));
    lineEdit = new QLineEdit;
    label->setBuddy(lineEdit);

    caseCheckBox = new QCheckBox(tr("Match &case"));
    backwardCheckBox = new QCheckBox(tr("Search &backward"));

    findButton = new QPushButton(tr("&Find"));
    findButton->setDefault(true);
    findButton->setEnabled(false);

    closeButton = new QPushButton(tr("Close"));

    connect(lineEdit , SIGNAL(textChanged(const QString&)) , this , SLOT(enableFindButton(const QString&)));
    connect(findButton , SIGNAL(clicked()) , this , SLOT(findClicked()));
    connect(closeButton , SIGNAL(clicked()) , this , SLOT(close()));

    QHBoxLayout* topLeftLayout = new QHBoxLayout;
    topLeftLayout->addWidget(label);
    topLeftLayout->addWidget(lineEdit);

    QVBoxLayout *leftLayout = new QVBoxLayout;
    leftLayout->addLayout(topLeftLayout);
    leftLayout->addWidget(caseCheckBox);
    leftLayout->addWidget(backwardCheckBox);

    QVBoxLayout *rightLayout = new QVBoxLayout;
    rightLayout->addWidget(findButton);
    rightLayout->addWidget(closeButton);
    rightLayout->addStretch();

    QHBoxLayout *mainLayout = new QHBoxLayout;
    mainLayout->addLayout(leftLayout);
    mainLayout->addLayout(rightLayout);
    setLayout(mainLayout);

    setWindowTitle(tr("Find"));
    setFixedHeight(sizeHint().height());
}

void findDialog::findClicked()
{
    QString text = lineEdit->text();
    Qt::CaseSensitivity cs = caseCheckBox->isChecked() ? Qt::CaseSensitive : Qt::CaseInsensitive;

    if(backwardCheckBox->isChecked())
        emit findPrevious(text , cs);
    else
        emit findNext(text , cs);
}

void findDialog::enableFindButton(const QString& text)
{
    findButton->setEnabled(!text.isEmpty());
}
#包括
#包括“findDialog.h”
findDialog::findDialog(QWidget*parent):QDialog(parent)
{
label=新的QLabel(tr(“Find&what:”);
lineEdit=新的QLineEdit;
标签->setBuddy(行编辑);
caseCheckBox=新的QCheckBox(tr(“匹配和案例”);
后退复选框=新的QCheckBox(tr(“搜索和后退”);
findButton=newqpushbutton(tr(“&Find”);
findButton->setDefault(true);
findButton->setEnabled(false);
closeButton=新的QPushButton(tr(“关闭”));
连接(lineEdit,SIGNAL(textChanged(const-QString&)),此,插槽(enableFindButton(const-QString&));
连接(findButton,SIGNAL(clicked()),此,插槽(findClicked());
连接(关闭按钮、信号(单击())、此、插槽(关闭());
QHBoxLayout*topLeftLayout=新的QHBoxLayout;
topLeftLayout->addWidget(标签);
topLeftLayout->addWidget(lineEdit);
QVBoxLayout*leftLayout=新的QVBoxLayout;
leftLayout->addLayout(topLeftLayout);
leftLayout->addWidget(caseCheckBox);
leftLayout->addWidget(backwardCheckBox);
QVBoxLayout*rightLayout=新的QVBoxLayout;
rightLayout->addWidget(findButton);
rightLayout->addWidget(关闭按钮);
rightLayout->addStretch();
QHBoxLayout*mainLayout=新的QHBoxLayout;
主布局->添加布局(左布局);
主布局->添加布局(右布局);
设置布局(主布局);
setWindowTitle(tr(“查找”);
setFixedHeight(sizeHint().height());
}
void findDialog::findClicked()
{
QString text=lineEdit->text();
Qt::CaseSensitive cs=caseCheckBox->isChecked()?Qt::CaseSensitive:Qt::CaseSensitive;
如果(backwardCheckBox->isChecked())
发射findPrevious(文本,cs);
其他的
发出findNext(文本,cs);
}
void findDialog::enableFindButton(常量QString&text)
{
findButton->setEnabled(!text.isEmpty());
}
main.cpp:

#include <QtGui\qapplication.h>
#include <iostream>
#include "findDialog.h"



int main(int argc , char* argv[])
{
    QApplication app(argc , argv);
    findDialog* dialog = new findDialog;
    dialog->show();
    return app.exec();
}
#包括
#包括
#包括“findDialog.h”
int main(int argc,char*argv[])
{
QApplication应用程序(argc、argv);
findDialog*对话框=新建findDialog;
对话框->显示();
返回app.exec();
}
当我编译此项目时,我得到6个链接错误:

LNK2001:未解析的外部符号“public:virtual struct QMetaObject const*u thiscall findDialog::metaObject(void)const”(?metaObject@findDialog@@UBEPBUQMetaObject@@XZ)

LNK2001:未解析的外部符号“public:virtual void*\uu thiscall findDialog::qt\u metacast(char const*)”(?qt_metacast@findDialog@@UAEPAXPBD@Z)

LNK2001:未解析的外部符号“public:virtual int u thiscall findDialog::qt_metacall(枚举QMetaObject::Call,int,void**)”(?qt_metacall@findDialog@@UAEHW4Call@QMetaObject@@HPAPAX@Z)

LNK2001:未解析的外部符号“public:static struct QMetaObject const findDialog::staticMetaObject”(?staticMetaObject@findDialog@@2UQMetaObject@@B)

LNK2019:未解析的外部符号“protected:void\uu thiscall findDialog::findNext(类QString const&,枚举Qt::CaseSensitivity)”(?findNext@findDialog@@IAEXABVQString@@W4CaseSensitivity@Qt@@@Z) 在函数“private:void\uu thiscall findDialog::findClicked(void)”中引用(?findClicked@findDialog@@AAEXXZ)

LNK2019:未解析的外部符号“受保护的:void u thiscall findDialog::findPrevious(类QString const&,枚举Qt::casesensitivious)”(?findPrevious@findDialog@@IAEXABVQString@@W4CaseSensitivity@Qt@@@Z) 在函数“private:void\uu thiscall findDialog::findClicked(void)”中引用(?findClicked@findDialog@@AAEXXZ)


提前感谢您,并对我的英语不好表示歉意。

链接错误来自
Qt的元对象编译器

只要在类中编写
Q_OBJECT
宏,它就会在类中定义一些Qt处理事件所需的成员函数。…
Qt MOC将创建一个新的.cpp文件,并将这些函数体写入其中。
链接错误清楚地表明FindDilog(名为
moc\u FindDilog.cpp
)的特定.cpp文件丢失。这意味着moc文件不是由Qt生成的。

可能VisualStudio忘记调用Qt Moc来生成.cpp文件。可能Visual Studio编译器没有编译它…

链接错误来自
Qt的元对象编译器

只要在类中编写
Q_OBJECT
宏,它就会在类中定义一些Qt处理事件所需的成员函数。…
Qt MOC将创建一个新的.cpp文件,并将这些函数体写入其中。
链接错误清楚地表明FindDilog(名为
moc\u FindDilog.cpp
)的特定.cpp文件丢失。这意味着moc文件不是由Qt生成的。

可能VisualStudio忘记调用Qt Moc来生成.cpp文件。也许Visual Studio编译器没有编译它…

也许您可以在Kia.celeve的基础上通过大量的工作来解决您的问题
"$(QTDIR)\bin\moc.exe"   -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_DLL  "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" ".\FindDialog.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"
".\GeneratedFiles\$(ConfigurationName)\moc_FindDialog.cpp" 
        <File
            RelativePath=".\FindDialog.h"
            >
            <FileConfiguration
                Name="Release|Win32"
                >
                <Tool
                    Name="VCCustomBuildTool"
                    Description="Moc&apos;ing FindDialog.h..."
                    CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot;   -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_DLL  &quot;-I.\GeneratedFiles&quot; &quot;-I$(QTDIR)\include&quot; &quot;-I.\GeneratedFiles\$(ConfigurationName)\.&quot; &quot;-I.&quot; &quot;-I$(QTDIR)\include\QtCore&quot; &quot;-I$(QTDIR)\include\QtGui&quot; &quot;.\FindDialog.h&quot; -o &quot;.\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp&quot;&#x0D;&#x0A;"
                    AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;.\FindDialog.h"
                    Outputs="&quot;.\GeneratedFiles\$(ConfigurationName)\moc_FindDialog.cpp&quot;"
                />
            </FileConfiguration>
            <FileConfiguration
                Name="Debug|Win32"
                >
                <Tool
                    Name="VCCustomBuildTool"
                    Description="Moc&apos;ing FindDialog.h..."
                    CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot;   -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB  &quot;-I.\GeneratedFiles&quot; &quot;-I$(QTDIR)\include&quot; &quot;-I.\GeneratedFiles\$(ConfigurationName)\.&quot; &quot;-I.&quot; &quot;-I$(QTDIR)\include\QtCore&quot; &quot;-I$(QTDIR)\include\QtGui&quot; &quot;.\FindDialog.h&quot; -o &quot;.\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp&quot;&#x0D;&#x0A;"
                    AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;.\FindDialog.h"
                    Outputs="&quot;.\GeneratedFiles\$(ConfigurationName)\moc_FindDialog.cpp&quot;"
                />
            </FileConfiguration>
        </File>