私は Qt を初めて使用し、qt が提供するサンプル プロジェクトの 1 つ「イメージ ビューアー」に基づいてアプリの開発を開始しました。
サンプル プロジェクト自体は次のとおりです: http://doc.qt.io/qt-4.8/qt-widgets-imageviewer-example.html
プロジェクトの機能を拡張するために間違ったことをしていないことを確認するために、新しいプロジェクトを作成し、サンプル プロジェクトからファイルをコピーしました ( 「イメージ ビューアーの例」ページの上部にある「ファイル」セクションを参照してください) 。
次に、imageviewer.hファイルを編集しました。
追加した
#include <QPainter>
と
protected:
void paintEvent(QPaintEvent *);
ImageViewer クラスに。
次に、 imageviewe.cppでpaintEventを定義しました。
void ImageViewer::paintEvent(QPaintEvent * e)
{
QPainter p(this);
p.drawLine(0,0,100,100);
}
左上隅に線を引くと思っていましたが、そうではありませんでした。
ポイントは、scrollAreaが行に重なって「見えなくなる」ことだと私には思えます。だから、私は行をコメントアウトしました
setCentralWidget(scrollArea);
ImageViewer::ImageViewer()定義内。
行は表示されましたが、画像は表示されませんでした。
次に、 paintEventコードを変更して、 scrollArea自体に描画を試みました。
void ImageViewer::paintEvent(QPaintEvent * e)
{
QPainter p(scrollArea);
p.drawLine(0,0,100,100);
}
その結果、次のようなメッセージが表示されました
QPainter::begin: ペイント デバイスから返されたエンジン == 0、タイプ: 1
それをグーグルで試してみましたが、解決策はスクロールエリアが行に重なることとは何の関係もありません(または単に機能しません)。
これについて何か助けていただければ幸いです。