Я новичок в программировании на 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)
но что такое Object Receiver?
Я даже отдаю себя получателем объекта, 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 он не запрашивает приемник объекта, и он просто запускает его, но в java это выглядит совершенно иначе.
execStatic()
. Простой способ сделать это — создать подкласс QWidget и использовать его какmainWidget
. Так что по-прежнему будутmainWidget.show()
иQApplication.execStatic()
, но весь остальной код приложения находится внутри приложения. - person Smar   schedule 19.04.2016