将linedit()的字符串输入转换为int以用作整数变量

时间:2014-12-04 11:51:18

标签: oracle qt qt4 oci

我设计了一个简单的GUI来检查数据库连接。数据库连接参数,如数据库名称,主机名,用户名,密码,端口等,将从GUI输入,输出将是红色或绿色图像,具体取决于连接。

我已经设置了oracle OCI插件(DB是oracle 10g)

并完成以下操作 -

void MainWindow::on_GoButton_clicked()
{
    QString HostN = ui->HostNameEdit->text();
    QString DatabaseN = ui->DatabaseNameEdit->text();
    QString UserN = ui->UserNameEdit->text();
    QString PassWD = ui->PasswordEdit->text();
    QString PortNO = ui->PortEdit->text();

QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");

db.setHostName(HostN);
db.setDatabaseName(DatabaseN);
db.setUserName(UserN);
db.setPassword(PassWD);
db.setPort(PortNO);

while(true)
{
    if (db.open())
    {
        // do this
    }
    else
    {
        //do that
    }
}

}

现在显示错误 - /home/aj/MY_QT_WORK/DB_connection_test/mainwindow.cpp:19:错误:没有用于调用'QSqlDatabase :: setPort(QString&)'的匹配函数

任何想法???

1 个答案:

答案 0 :(得分:4)

你可以把它写成:

db.setPort(PortNO.toInt());

但是为了更加正确,你必须确保PortNO字符串真的可以转换为整数值。因此,您可以使用一个标志来指示成功转换:

bool ok;
int portNumber = PortNO.toInt(&ok);

if (!ok) {
    qDebug() << "The port number is incorrect";
    // return?
}