【发布时间】:2013-06-13 14:59:55
【问题描述】:
我创建了一个简单的隐写库,并尝试创建一个小型 Qt 5.0.2 应用程序来测试它。它由两个用于存储和显示路径名的 textEdits 和两个弹出文件对话框以选择文件 txt 和 bmp 的按钮组成,以允许将前者“嵌入”到后者中。
但是当我单击“生成”按钮时,它会抛出“在抛出 'char const*' 的实例后调用终止。
void MainWindow::on_generate_clicked()
{
BmpFile bm(MainWindow::bmpName);
char *outputFile = "test1.bmp";
if( bm.hide(MainWindow::bmpName, MainWindow::txtName, outputFile) == 0 )
{
printf("Hidding done.\n");
}
else
{
printf("Error!");
}
}
是引发错误的 Qt 槽。
void MainWindow::on_selFile_clicked()
{
QString txtname(MainWindow::txtName);
txtname = QFileDialog::getOpenFileName(this, tr("Open file"),"",tr("Files (*.txt)"));
ui->fileBox->setText(txtname);
QByteArray ba = txtname.toLocal8Bit();
MainWindow::txtName = ba.data();
}
void MainWindow::on_selBitmap_clicked()
{
QString bmpname=(MainWindow::bmpName);
bmpname = QFileDialog::getOpenFileName(this, tr("Open file"),"",tr("Files (*.bmp)"));
ui->bmpBox->setText(bmpname);
QByteArray ba = bmpname.toLocal8Bit();
MainWindow::bmpName = ba.data();
}
是处理和存储这两个文件的两个槽
this 是图书馆。
我感觉这与转换为 QString 并返回有关,但我不确定。
【问题讨论】:
-
您能说得更具体些吗?发生错误时您在调用什么?具体的错误文本是什么?后两个插槽如何影响问题?请编辑问题以提供这些细节。
-
@CoryKlein 我已编辑以反映更改。
-
我预计它会抛出 "("文件不退出或文件名错误。\n");"来自您的外部图书馆。
-
@drescherjm 我已经尝试过处理多个文件和不存在的文件,并且该错误消息仅在这些情况下抛出。
-
这并不意味着重写库。这意味着您在构造 bm 时从 QString 转换为 const char*。