0

関数を戻せない理由を理解するのに問題があります。何か案は?

私が得るエラーは次のとおりです。'*'トークンの前および')'トークンの前に1次式が必要です。

(これがC ++またはQtエラーであるかどうかわからない、私は両方の専門家ではありません)

int MainWindow::createPacket(const QString &source)

    {
        QGraphicsView *editor = new QGraphicsView;
        int tabIndex = packet->addTab(editor, source); 
        packet->setCurrentIndex(tabIndex);

        return paintEvent(QPaintEvent*); <<<<<<<<< The line the error appears on.
    }

    void MainWindow::paintEvent(QPaintEvent*)
    {
        QPainter painter(this);
        painter.setRenderHint(QPainter::Antialiasing);
        painter.setPen(Qt::black);

        QRect rect = QRect(10, 20, 70, 40);
        painter.drawText(rect, Qt::AlignCenter,
                         "Source");
        painter.drawRect(rect);
    }
4

2 に答える 2

2

QPaintEvent*タイプです。関数を呼び出すときは、タイプではなく、パラメーターとしてオブジェクトを渡しません。

また、パラメータtopaintEventは名前も使用もされていないのに、なぜそこにあるのでしょうか。単純に使用しないのはなぜですか。

void MainWindow::paintEvent()
{
   //...
}

コードが無効であり、それがどのように機能するのか、またはあなたが何を期待しているのか想像できません。これは基本的なことです。Qtを始める前に、まずC ++を学ぶことをお勧めします(これは見下すようなものではなく、単なるアドバイスです)。

有効な呼び出しは、たとえば次のようになります。

QPaintEvent* qpaintEventPointer = NULL;
paintEvent(qpaintEventPointer);

paintEventただし、はを返すため、これは無効ですがvoid、呼び出し元のコンテキストはを返しますint

関数自体を返すには、関数ポインターを返す必要があります。関数ポインターを返す必要がありintます。完全な署名は必要ありませんreturn paintEvent。...

結論。

于 2012-12-30T20:16:46.137 に答える
1

正しく呼び出したとしてもMainWindow::paintEvent()、この関数は何も返さず、システムがウィジェットを描画する必要があるときに自動的に呼び出されるはずです (ドキュメントを参照してください) 。

何をしようとしていたのかわかりませんが、再描画をトリガーするには、paintEvent() ではなく、repaint() を呼び出します。

于 2012-12-30T20:50:06.643 に答える