Ich habe folgende Aufgabenstellung:
Ein QFrame soll ein einzelnes Feld darstellen, in dem eine Zahl eingetragen werden soll. Bei einem Mausklick auf den Frame soll dieser den Fokus erhalten und dabei einen Rahmen gezeichnet bekommen (um zu erkennen, dass er fokussiert ist).
Sobald also der Fokus auf dem Frame liegt, soll man mit der Tastatur eine Zahl eingeben können.
Ich bin soweit, dass ich den Frame habe und zunächst über das paintEvent mit einer 0 beschrifte (sodass also gleich bei Programmstart eine 0 im Frame steht).
An dieser Stelle komme ich nun nicht weiter.
Vor allem, da QFrame kein click-Event hat und man das (soweit ich weiß) über ein Mouse-Event implementieren muss.
Wie genau kann ich also mit einem Mausklick den Fokus auf den Frame setzen und dabei einen Rahmen im Frame zeichnen lassen?
Das ist meine Sudokucell.h:
Code: Alles auswählen
#pragma once
#include <QtGui>
class Sudokucell : public QFrame
{
Q_OBJECT;
public:
Sudokucell(QWidget *parent=0) : QFrame(parent), _isFilled(false), _prefilled(false), _solution(1), _currentValue(1){}
public slots:
private:
bool _isFilled;
bool _prefilled;
int _solution;
int _currentValue;
protected:
void paintEvent(QPaintEvent *event);
};Code: Alles auswählen
#include "sudokucell.h"
void Sudokucell::paintEvent(QPaintEvent*)
{
QPainter painter(this);
painter.drawText(rect(), "0");
}Code: Alles auswählen
#include "sudokucell.h"
int main(int argc,char *argv[])
{
QApplication app(argc,argv);
Sudokucell *cell = new Sudokucell();
cell->show();
cell->resize(100,100);
cell->setFont(QFont("Arial", 70));
cell->setWindowTitle("Cell");
//QObject::connect(X,SIGNAL(X()),cell,SLOT(setFocus()));
app.exec();
return 0;
}