我是Java编程的新手。我编写了下面列出的应用程序,但我无法将按钮连接到我的功能。知道我做错了吗?
package com.teat;
import com.trolltech.qt.gui.*;
public class Application
{
public static void main(String[] args)
{
QApplication.initialize(args);
QWidget mainWidget = new QWidget();
mainWidget.setWindowTitle("Simple Example");
QHBoxLayout main_layout = new QHBoxLayout();
mainWidget.setLayout(main_layout);
QPushButton new_action = new QPushButton("Working");
new_action.released.connect("Tata()");
main_layout.addWidget(new_action);
SumNum(5,3);
mainWidget.show();
QApplication.execStatic();
QApplication.shutdown();
}
private static int SumNum(int num1,int num2)
{
int sum = num1 + num2;
System.out.println(sum);
return sum;
}
private static void Tata(){
System.out.println("Yes, it's Working");
}
}
当我调用像SumNum(5,3);
这样的函数时,它运行得很好,但是当我从按钮调用它时,它不起作用。我正在使用new_action.released.connect("Tata()");
我看了Qt,它给了我
void com.trolltech.qt.QSignalEmitter.AbstractSignal.connect(Object receiver, String method)
但什么是对象接收器?
我甚至将自己作为对象接收者,new_action.released.connect(new_action,"Tata()");
,但是,不,它也不起作用。
有什么想法吗?
编辑:这里是python中的相同应用程序:
import sys
from PyQt4 import QtGui, QtCore
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.setWindowTitle('Simple Example')
main_layout = QtGui.QHBoxLayout()
self.setLayout(main_layout)
new_action = QtGui.QPushButton("Working")
new_action.released.connect(self.Tata)
main_layout.addWidget(new_action)
self.show()
def SumNum(self, num1, num2):
print num1+num2
return num1+num2
def Tata(self):
print "Yes, it's Working"
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
在Python中它没有要求Object接收器,它只是运行它,但在java中看起来完全不同。
答案 0 :(得分:1)
QWidget
扩展,初始Application()
中的设置,在initUI()
中设置布局并在main()
中运行{1}}。
import com.trolltech.qt.core.*;
import com.trolltech.qt.gui.*;
public class Application extends QWidget {
public Application() {
setWindowTitle("Simple Example");
setMinimumHeight(100);
setMinimumWidth(100);
setGeometry(250, 250, 350, 100);
initUI();
show();
}
private void initUI() {
QHBoxLayout main_layout = new QHBoxLayout(this);
QPushButton new_action = new QPushButton("Working");
new_action.released.connect(this,"Tata()");
main_layout.addWidget(new_action);
}
private void Tata(){
System.out.println("Yes, it's Working");
}
public static void main(String[] args) {
QApplication.initialize(args);
new Application();
QApplication.execStatic();
QApplication.shutdown();
}
}
因为我从QWidget
延伸,所以我只需要像QHBoxLayout main_layout = new QHBoxLayout(this);
那样设置布局。注意这个
以及连接按钮new_action.released.connect(this,"Tata()");
对象接收器就是这个或另一个单词当前QWidget
它与Python完全相同,只是python使用self
而Java使用this
。
这对我有用,希望有帮助,但有同样的问题。