int main(int argc, char ** argv) { QApplication app{argc, argv}; WhatsThisSignaler sig; QPlainTextEdit w; w.setWindowFlags(Qt::WindowContextHelpButtonHint | Qt::WindowCloseButtonHint); w.setMinimumSize(200, 200); w.setReadOnly(true); w.show(); sig.installOn(&w); QObject::connect(&sig, &WhatsThisSignaler::whatsThisEvent, &w, [&w](QWidget*widget, QEvent*ev){ w.appendPlainText(QStringLiteral("%1(0x%2) \"%3\" QEvent::%4") .arg(widget->metaObject()->className()) .arg((uintptr_t)widget, 0, 16) .arg(widget->objectName()) .arg(toName(ev->type()))); }); return app.exec(); }
About::About(QWidget * parent, Qt::WindowFlags f) : QDialog(parent, f) { // stuff setWindowTitle("About LibreLibreCell"); QLabel *versionLabel = new QLabel(QString("Git revision: %1").arg(LIBRELIBRECELL_VERSION)); QPlainTextEdit *aboutBox = new QPlainTextEdit; QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok); QVBoxLayout *vLayout = new QVBoxLayout; vLayout->addWidget(versionLabel); vLayout->addWidget(aboutBox, 1); vLayout->addSpacing(10); vLayout->addWidget(buttonBox); setLayout(vLayout); aboutBox->setReadOnly(true); aboutBox->setTabChangesFocus(true); aboutBox->setWordWrapMode(QTextOption::NoWrap); aboutBox->setLineWrapMode(QPlainTextEdit::NoWrap); aboutBox->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); aboutBox->setFont(QFont("Monospace", 10)); QFile readme(":/README.txt"); if (readme.open(QIODevice::ReadOnly)) { QTextStream stream(&readme); aboutBox->setPlainText(stream.readAll()); readme.close(); } else { aboutBox->setPlainText("Could not open README.txt."); } QFontMetrics fm(aboutBox->font()); aboutBox->setMinimumSize(fm.width(QLatin1Char('m')) * 76, 450); connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept())); }