0

カスタム qt ウィジェットをいくつか作成する必要があり、そのうちのいくつかはカスタム描画を使用します。これらのウィジェットは、会社の qt スタイルシートを介してスタイル設定する必要があります。

QMainWindowこれにより、一部のカスタム ウィジェットがまたはに適用されたスタイルシートから値を取得する必要があるという問題が発生しますQApplicationqproperty-...この値は、qt の公式プロパティまたはカスタムプロパティのいずれかです。

ただし、ウィジェットからそれらにアクセスするのは簡単ではありません。1つのオプションは、スタイルシート文字列を取得し、興味のある値を手動で解析/正規表現することです.qtには、公式のqtウィジェットの描画中に使用されるスタイルシートデータを解析するための機能がすでにある必要があるため、これは明らかにひどい解決策です. .

... Qt は QStyleSheetStyle と呼ばれる QStyle サブクラスを作成します。これは、通常の QStyle メソッドを介してスタイル シート情報を照会できることを意味します ...

問題 1)

この記事ではこのアイデアについて説明しますが、残念ながら実際にこれを実現する方法については詳しく説明しません。私の経験不足により、qt のソースに飛び込んだ後でも、これを行う方法を見つけることができませんでした。

問題 2)

これは、通常の qt プロパティ (カスタムqproperty-...プロパティではなく) にのみ適用されると思います。このアプローチと比較して、それらにアクセスするためのより良い方法はありますか?

# example for retrieving qproperty-offset
def get_offset(self):
    return self._offset

def set_offset(self, offset:int):
    self._offset = offset
    self.update()

offset = QtCore.Property(int, get_offset, set_offset)
4

1 に答える 1

1

いいえ、Qt スタイル シートの実装はプライベート Qt API の一部である QStyle を介して行われるため、現時点では不可能です。Qt6 では、そのスタイルを公開することを目的としています。したがって、スタイルシートからプロパティを取得するソリューションは、qproperty を使用することです。

于 2020-11-28T23:11:01.093 に答える