Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.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
C++ Can';找不到'Preferences';_C++_Qt - Fatal编程技术网

C++ Can';找不到'Preferences';

C++ Can';找不到'Preferences';,c++,qt,C++,Qt,我正在研究一些数据库应用程序,我发现了一些让我停滞不前好几天的东西。 如上调试人员所述: 找不到找到的Preferences'值的虚拟表的链接器符号>Ui\u主窗口::setupUi(QMainWindow*)::{lambda()#13}::operator()()const::qstring_literal' 我的代码如下: MainWindow.cpp,只有一种方法: QString MainWindow::ConnectDatabase() { // TODO Make Alav

我正在研究一些数据库应用程序,我发现了一些让我停滞不前好几天的东西。 如上调试人员所述:

找不到找到的
Preferences'值的虚拟表的链接器符号>
Ui\u主窗口::setupUi(QMainWindow*)::{lambda()#13}::operator()()const::qstring_literal'

我的代码如下: MainWindow.cpp,只有一种方法:

QString MainWindow::ConnectDatabase()
{
    // TODO Make Alaviability to change Database things
    QSqlDatabase database = QSqlDatabase::addDatabase("QMYSQL");
    Preferences pref;
    std::vector <QString> preferencesVector = pref.openFromFile();

    database.setHostName(preferencesVector[1]);
    database.setDatabaseName(preferencesVector[2]);
    database.setUserName(preferencesVector[3]);
    database.setPassword(preferencesVector[4]);
    if (database.isValid())
    {
        database.open();
        return "Połączono!\n";
    }
    else
      return "Database Error: " + database.lastError().text();
}
QString主窗口::ConnectDatabase()
{
//要更改数据库内容,请执行以下操作
QSqlDatabase=QSqlDatabase::addDatabase(“QMYSQL”);
偏好优先;
std::vector preferencesVector=pref.openFromFile();
setHostName(preferencesVector[1]);
setDatabaseName(preferencesVector[2]);
database.setUserName(preferencesVector[3]);
database.setPassword(preferencesVector[4]);
if(database.isValid())
{
open();
返回“Połączono!\n”;
}
其他的
返回“数据库错误:”+Database.lastError().text();
}
和preferences.cpp中的preferences类:

Preferences::Preferences(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Preferences)
{
    ui->setupUi(this);
}

Preferences::~Preferences()
{
    delete ui;
}

std::fstream Preferences::openFile()
{
    std::fstream preferencesFile;
    preferencesFile.open("preferencesFile.txt");
    return preferencesFile;
}

std::vector<QString> Preferences::openFromFile()
{
    std::string line;
    std::vector <QString> preferencesVector;
    std::fstream preferencesFile = openFile();
    if (preferencesFile.is_open())
    {
        while (std::getline(preferencesFile, line))
            preferencesVector.push_back(QString::fromStdString(line));
    }
    return preferencesVector;
}

void Preferences::saveIntoFile()
{
    std::fstream preferencesFile = openFile();
    if (preferencesFile.is_open())
    {
        preferencesFile << ui->lineEditHos;
        preferencesFile << ui->lineEditDatabase;
        preferencesFile << ui->lineEditUser;
        preferencesFile << ui->lineEditPassword;
        QMessageBox::information(NULL, "Informacja", "Plik z ustawieniami został zapisany", QMessageBox::Ok);
    }
    else
        QMessageBox::warning(NULL, "UWAGA!", "Plik z ustawieniami nie został otwarty", QMessageBox::Ok);
    preferencesFile.close();
}
bool Preferences::on_pushButtonOk_clicked()
{
    saveIntoFile();
    this->close();
    return true;
}
首选项::首选项(QWidget*父项): QDialog(父级), ui(新ui::首选项) { 用户界面->设置用户界面(此); } 首选项::~Preferences() { 删除用户界面; } std::fstream首选项::openFile() { std::fstream首选文件; preferencesFile.open(“preferencesFile.txt”); 返回优先文件; } std::vector首选项::openFromFile() { std::字符串行; std::向量优先向量; std::fstream preferencesFile=openFile(); 如果(首选项文件是打开的()) { while(std::getline(preferencesFile,line)) preferencesVector.push_back(QString::fromStdString(line)); } 返回优先选择向量; } void首选项::saventofile() { std::fstream preferencesFile=openFile(); 如果(首选项文件是打开的()) { 首选文件行编辑; 首选项文件行编辑数据库; 首选项文件lineEditUser; 首选项文件行编辑密码; QMessageBox::information(NULL,“Informacja”,“Plik z ustawieniami zostałzapisany”,QMessageBox::Ok); } 其他的 QMessageBox::warning(NULL,“UWAGA!”,“Plik z ustawieniami nie zostałotwarty”,QMessageBox::Ok); 首选项file.close(); } bool首选项::在按下按钮时单击() { saventofile(); 此->关闭(); 返回true; }
提前谢谢你

我想你需要提供更多的背景。例如,我看不到类“Preferences”的声明(即
类首选项{..};
)。尝试一个。为什么使用sql标记?通常,像这样的链接器错误会由编译方式来解释。特别是,您的错误消息强烈建议使用
uic
-如何确保UI被编译和链接?检查类声明的开头是否有
Q_对象
宏(您需要它)。然后确保执行一次清理,重新运行qmake并重新生成。