我正在做一個計算器,我不想讓 0-9 數字能夠從鍵盤輸入。因此,我創建了 QPushButton,將它們與我的插槽連接起來,并為每個按鈕添加了一個快捷方式 (0-9)。對于所有其他按鈕,我也添加了快捷方式,它們都可以作業。只有'0'沒有。我一直在 Qt 設計中添加它們,所以我只是在視窗中輸入了所需的快捷方式。
按鈕被命名為 Button0,..., Button9 并以這種方式連接:
ui->Display->setText(QString::number(calcVal, 'g', span));
QPushButton *numButtons[10];
for(int i = 0; i < 10; i)
{
QString butName = "Button" QString::number(i);
numButtons[i] = Calculator::findChild<QPushButton *>(butName);
connect(numButtons[i], SIGNAL(released()), this,
SLOT(NumPressed()));
}//for
該函式如下所示:
void Calculator::NumPressed()
{
if (nowy)
{
ui->Display->setText("");
nowy = false;
}//if
if (mathBut)
{
ui->Display->setText("");
mathBut = false;
}//if
QPushButton *button = (QPushButton *)sender();
butVal = button->text();
displayVal = ui->Display->text();
QString zero = "0";
if(displayVal == zero)
ui->Display->setText(butVal);
else
ui->Display->setText(displayVal.append(butVal));
rBracket = false;
}//void
但我認為這不是問題,因為如果我用滑鼠單擊按鈕,它可以正常作業,只有快捷方式在它為“0”時不起作用。當我將其更改為“K”或“J”時,它起作用了。
快捷方式在 xml 檔案中分配:
<widget class="QPushButton" name="Button0">
<property name="geometry">
<rect>
<x>110</x>
<y>280</y>
<width>91</width>
<height>32</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="styleSheet">
<string notr="true">QPushButton {
background-color: Silver;
border: 1px solid gray;
padding: 5px;
color: black;
}
QPushButton:pressed {
background-color: #A9A9A9;
border: 1px solid gray;
padding: 5px;
color: black;
}</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="shortcut">
<string>0</string>
</property>
</widget>
(第 34-35 行)
任何人都可以幫忙嗎?
uj5u.com熱心網友回復:
我唯一能想到的:0
快捷方式已經分配給同一個小部件中的其他東西。也許您可以在編輯模式下打開 ui 檔案并<string>0</string>
使用 Select All 查找,然后從上到下滾動檔案以找到“陰影”檔案。
一種(也許)更快的方法:注意 Button0 在按下零時是否至少獲得焦點,然后在再次按下零時失去焦點。如果是:嘗試在視覺上跟蹤焦點(即查看分配了哪些其他控制元件)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/505347.html
上一篇:如何將結果從命令輸出到文本框