是否可以检测文件名文本编辑何时获得焦点? 输入文本编辑后,我需要显示一个虚拟键盘
谢谢
答案 0 :(得分:1)
这不是一个精确的解决方案,但是这是一种很hacky的方法,它可以正常工作-import javax.swing.*;
import java.util.*;
public class Aufgabe42
{
public static void main(String[] args)
{
//Declare variable
String input, output, requestNumber;
double[] arrayNumber;
int size;
//Input
input = JOptionPane.showInputDialog(null, "Type in the size of the array.");
//Variable Initialization
size = Integer.parseInt(input);
arrayNumbers = new double[size];
//Request numbers
for(int i = 0; i < size; i++)
{
requestNumber = JOptionPane.showInputDialog(null, "Tell me a number:");
arrayNumber[i] = Double.parseDouble(requestNumber);
}
String returnAverage;
//Initialization and Output
output = Double.toString(JOptionPane.showMessageDialog(null, "The Average is: " + getAverage(arrayNumber)));
System.exit(0);
}
public static double getAverage(double[] arrayNumber)
{
//Declare variable
double arraySum,average;
//Initialization
arraySum = 0;
returnAverage = Double.toString(average);
//Sum array values
for(int i = 0; i < arrayZNumber.length; i++)
{
arraySum += arrayNumber[i];
}
//Calculate Average
average = arraySum / arrayNumber.length;
return average;
}
}
也是一个带有子级的小部件,因此您可以访问该文件名QFileDialog
并做任何需要的事情。
类似... QLineEdit
消息过滤器会更好,因为它不需要其他操作或更改对话框的行为。
QLineEdit* lineEdit = dlg->findChild<QLineEdit*>();
仍然需要对正确的事件处理进行一些调整,尝试使用最简单的演示,但仍然有效:
QLineEdit* lineEdit = dlg->findChild<QLineEdit*>();
FocusEater* filter = new FocusEater(this);
lineEdit->installEventFilter(filter);
connect(filter, &FocusEater::gotFocus, [](){
QMessageBox::information(nullptr, "FUU", "BAR");
});
实际上,要实现自定义文件对话框不是很困难,具体取决于假定的自定义量,但是“焦点检测”也可以。