0

簡単なステガノグラフィ ライブラリを作成し、小さな Qt 5.0.2 アプリを作成してテストしようとしています。これは、パス名の保存と表示に使用される 2 つの textEdits と、ファイル ダイアログをポップアップしてファイル txt と bmp を選択し、前者を後者に「埋め込む」ことができるようにする 2 つのボタンで構成されます。

しかし、「生成」ボタンをクリックすると、「'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();
}

2 つのファイルを処理および保存する 2 つのスロットです。

そしてこれが図書館。

QStringへの変換とその逆に関係しているように感じますが、よくわかりません。

4

1 に答える 1

0

OP に関する議論に基づいて、ファイル名を QString のままにしておくことをお勧めします。char* bmpName を置き換えます。QString strBmpName; あなたのヘッダーに。次に、QString を次の行の char* に変換します。

BmpFile bm(MainWindow::bmpName);

QByteArray ba = strBmpName.toLocal8Bit();
BmpFile bm(ba.data());
于 2013-06-13T16:03:03.140 に答える