2

Qtで画像を表示しようとしていますが、別のウィンドウに表示させることはできますが、メインウィンドウ内に表示させることはできません

Qt_first w;
w.show();

これは、Qt デザイナーで設計したウィンドウを示しています。そのウィンドウの QWidget (centralWidget) 内に配置した Qlabel(Image_Lbel) にアクセスするにはどうすればよいですか?

正しいウィンドウ内ではなく、正しく表示されるストライプ画像を生成しました

QSize size = QSize(640,480);
QImage::Format format = QImage::Format_ARGB32;
QImage image = QImage::QImage(size, format);
//generate
QLabel myLabel;
myLabel.setPixmap(QPixmap::fromImage(image));
myLabel.show();

作成者からのファイルや名前空間を含めていない可能性があると感じています。提案は大歓迎です

4

3 に答える 3

4

Labelあなたは独立して表示されていると思います。ラベルの親をメイン ウィンドウに設定します。次に、あなたのLabel意志がメインウィンドウ内に表示されます。

だから使う、

QLabel *myLabel = new QLabel(this); // sets parent of label to main window 
myLabel->setPixmap(QPixmap::fromImage(image));
myLabel->show();

メイン ウィンドウ内でラベルを移動するには、移動機能を使用することもできます。

于 2012-07-31T11:30:45.403 に答える
1

クラス外からラベルを設定したい場合は、Qt_firstこれを行うメソッドを追加する必要があります。例 (qt_first.cpp では、それに応じて qt_first.h を変更します):

void Qt_first::setImageLabel(const QImage& image)
{
    ui->Image_Lble.setPixmap(QPixmap::fromImage(image));
}

uiこの例では、Qt Designer で作成した UI を表すオブジェクトです。

于 2012-07-31T11:31:24.993 に答える
0

両方のおかげで、両方の答えを組み合わせて使用​​しました

Qt_first w;  // the UI I made with Qt creator
QLabel *myLabel = w.getImageLabel();
myLabel->setPixmap(QPixmap::fromImage(image));
w.show();

Qt_first クラス内で次のように

QLabel* Qt_first::getImageLabel(){  
    QLabel *myLabel = ui.Image_Label;
    return myLabel;
}
于 2012-07-31T13:29:10.990 に答える