0

ツールボックスを使用して複数のドキュメントレポートを作成したい。2ページは開始するオプションです。フォーマットは問題なく、後で作業できます。

HTMLでQTextDocumentを使用してみましたが、代わりにQPainterを使用しました。

もちろん、テストを行い、物事を単純にするために、Qtで、ドキュメントの上に表示されるレポートタイトルを表示するように依頼します。

ツールボックスのメインフレームの機能は次のとおりです。

def toolbox_frame(self,MainWindow):
    self.toolBox = QtGui.QToolBox(self.centralwidget)
    self.toolBox.setGeometry(QtCore.QRect(10, 20, 471, 201))

    self.toolbox_page1()
    self.toolBox.addItem(self.page1, "")
    self.toolBox.setItemText(self.toolBox.indexOf(self.page1), QtGui.QApplication.translate("MainWindow", "Page 1", None, QtGui.QApplication.UnicodeUTF8))

    self.toolbox_page2()
    self.toolBox.addItem(self.page2, "")
    self.toolBox.setItemText(self.toolBox.indexOf(self.page2), QtGui.QApplication.translate("MainWindow", "Page 2", None, QtGui.QApplication.UnicodeUTF8))

... HtmlでQTextDocumentを使用して最初のページを保持する関数:

def toolbox_page1(self):
    self.page1 = QtGui.QWidget()
    self.page1.setGeometry(QtCore.QRect(0, 0, 471, 145))

    html = u""
    html += (" <p><font color=red><b>Title - Build "
                     "a Report : page 1.</b></font>")
    document = QtGui.QTextDocument(self.page1)
    document.setHtml(html)

そしてここでQPainterを使用する関数:

def toolbox_page2(self):
    self.page2 = QtGui.QWidget()
    self.page2.setGeometry(QtCore.QRect(0, 0, 471, 145))

    sansFont = QtGui.QFont("Helvetica", 10)
    painter = QtGui.QPainter(self.page2)
    painter.setFont(sansFont)
    painter.setPen(QtGui.QColor(168, 34, 3))
    x=50
    y=50
    painter.drawText(x, y, "Title - Build a Report : page 2")

問題は、1ページと2ページのツールボックスが表示されるだけで、1ページと2ページの両方のレポートのタイトルが表示されないことです。

ここに何が欠けていますか?

すべてのコメントと提案は高く評価されています。

4

1 に答える 1

1

page1の場合、ドキュメントはウィジェットで表示する必要があります。その関数に以下を追加します

    textEdit = QtGui.QTextEdit(self.page1)
    textEdit.setDocument(document)
    layout = QtGui.QVBoxLayout(self.page1)
    layout.addWidget(textEdit)

page2の場合、ウィジェットでのペイントは、サブクラスまたはイベントフィルターの作成を必要とするペイントイベントに応答する必要があります。テキストを描画する簡単な方法は、QLabelを使用することです。関数を次のように変更します

def toolbox_page2(self):
    self.page2 = QtGui.QWidget()
    self.page2.setGeometry(QtCore.QRect(0, 0, 471, 145))

    label = QtGui.QLabel(self.page2)
    label.setText("Title - Build a Report : page 2")
    label.setStyleSheet("font: 10pt 'Helvetica'; color: rgb(168, 34, 3)")
    label.setGeometry(QtCore.QRect(QtCore.QPoint(50, 50), label.sizeHint()))
于 2010-01-01T16:18:05.540 に答える