हेक्स संख्याओं को इनपुट और प्रदर्शित करने के लिए QSpinBox का उपयोग करने के लिए, बस displayIntegerBase को 16 पर सेट करें। हालांकि, मुझे डिस्प्ले को अपरकेस पर सेट करने के लिए कोई प्रॉपर्टी या विधि नहीं मिली (उदाहरण के लिए 1A बल्कि 1a की तुलना में)।

मुझे पता है कि मैं इसे करने के लिए textFromValue() विधि को ओवरराइड कर सकता हूं लेकिन यह काफी सामान्य उपयोग के मामले की तरह लगता है। ऐसा करने का एक आसान तरीका होना चाहिए, है ना?

मैं क्यूटी 5.12 का उपयोग कर रहा हूँ।

3
chunjiw 15 मई 2019, 22:56

1 उत्तर

सबसे बढ़िया उत्तर

आप कैपिटलाइज़ेशन सेट करके अपने spinBox का फ़ॉन्ट QFont::AllUppercase पर

    QFont font = ui->spinBox->font();
    font.setCapitalization(QFont::AllUppercase);
    ui->spinBox->setFont(font);

संपादित करें: मैंने व्यवहार दिखाने के लिए एक छोटा सा उदाहरण तैयार किया है

#include <QWidget>
#include <QApplication>
#include <QHBoxLayout>
#include <QSpinBox>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget *w = new QWidget();
    QLayout* layout = new QHBoxLayout(w);

    QSpinBox* spinBox = new QSpinBox(w);
    spinBox->setRange(0, 0xFF);
    spinBox->setDisplayIntegerBase(16);
    QFont font = spinBox->font();
    font.setCapitalization(QFont::AllUppercase);
    spinBox->setFont(font);

    QSpinBox* spinBox2 = new QSpinBox(w);
    spinBox2->setRange(0, 0xFF);
    spinBox2->setDisplayIntegerBase(16);

    spinBox->setValue(0x1a);
    spinBox2->setValue(0x1a);

    layout->addWidget(spinBox);
    layout->addWidget(spinBox2);

    w->show();

    return a.exec();
}

यह निम्नलिखित परिणाम देता है:

अपरकेस और लोअरकेस हेक्साडेसिमल स्पिनबॉक्स

6
Cendolt 13 अप्रैल 2021, 05:44