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并重新生成。