2011-07-25 8 views
1

Qtデザイナーのバージョン3.xのQt3用の古いドキュメントを除いて、私はまだ見ていませんでした。Qtデザイナー:カスタムアクションのカスタムコード

例を残しておきます。私のプロジェクトはGPLですが、簡単にするためにコードを与えることはできません。

例:アプリケーションのGUIを設計しています。 GUIにいくつかのボタンを挿入し、これらのボタンがかもしれない、のようなロジックを持つものを作成したいとします。

質問:どのようにあなたがそれをチェックだボタンがそのコードを発動するような方法で、このコードを追加したり、設定するのですか?

信号/スロットにウィジェットを接続したくありません。私のアプローチは、アクションエディタでカスタムアクションを作成し、そのアクションのコードを書き込む方法を見つけることを望んでいるそのアクションに希望のボタンを接続することでした。名前、アイコン(?)などを定義することができます。しかし、私はロジック/コードを書く必要があります。

documentationは、C++ヘッダーファイルを作成するよう指示していますが、新しいQt Designerバージョン(4.7.3)では非推奨となっているようです。私の質問で見つけた他の広大なリソースは、デフォルトのオブジェクトアクション間の信号の接続に関するものです。私はそれが私が必要とする/望むものではないことを繰り返す。

私の質問は、生成された.pyを編集したくないという事実から生まれました。私はカスタムアクションコードでファイル(カスタムコード、ヘッダーファイルなど)を設定する方法でなければならないと思っていますが、正直なところ、まだ何も見つかりません。

否定的な回答(「できない」)の場合は、コードを「ハッキングする」ためのアドバイスを聞くのがよいでしょう。私は実際に生成された.pyを変更したくないので、次のようなことをするのは醜いようです。ui.callback私のコードです。

よろしく、あなたがpyuic生成されたファイルをヘッダファイルを作成または変更する必要はありません

答えて

6

。あなたのアクションオブジェクトがmyaction命名されたと仮定すると、あなたはそれがトグルだときmyaction_slotを合図にしたい:

import sys 
from PyQt4 import QtCore, QtGui 

# import pyuic generated user interface file 
from ui_mainwindow import Ui_MainWindow 

class MyMainWindow(QtGui.QMainWindow, Ui_MainWindow): 
    def __init__(self, parent=None): 
     super(MyMainWindow, self).__init__(parent) 
     self.setupUi(self) 
     # connect myaction_logic to myaction.toggled signal 
     self.myaction.toggled.connect(self.myaction_slot) 

    def myaction_slot(self): 
     pass # do something here 

if __name__ == "__main__": 
    app = QtGui.QApplication(sys.argv) 
    myapp = MyMainWindow() 
    myapp.show() 
    sys.exit(app.exec_()) 
+0

私が予想よりも簡単だったこと、私はQtのドキュメントで何かを見逃したのか?あなたの努力と明確なコードに感謝btw。 – Sebastian

+0

@セバスチャンかもしれませんか?私も始めたときにとても混乱していました。私は通常、PySideを使用しています。彼らのドキュメンテーション/チュートリアルは、Qt(PySide/PyQtは多かれ少なかれ互換性があります)で作業を始めたときに読んだものでした:http://developer.qt.nokia.com/wiki/PySide_Newbie_Tutorials – zeekay

+0

私は以前のコメント、悲しい、私はかなり間違った何かをコメントしました。再度、感謝します。 – Sebastian

関連する問題