If you are new to C++ then some of the compiler errors can be a bit confusing and daunting at first. For example if the compiler given you an expected primary-expression error (e.g. expected primary-expression before ‘.’ token), at face value it does not make sense.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| void RGBViewer::accept() {
QMessageBox::information(this, "Button Clicked", "You clicked OK", QMessageBox::Ok);
QColor color = QColor(Ui_RGBViewerClass.spinBoxRed->value(),
Ui_RGBViewerClass.spinBoxGreen->value(),
Ui_RGBViewerClass.spinBoxBlue->value(),
255);
qDebug() << color;
QBrush brush(color);
brush.setStyle(Qt::SolidPattern);
ui.graphicsView->setBackgroundBrush(brush);
ui.graphicsView->backgroundBrush();
}
|
When I compile the above code snippet, I get the following error from the compiler:
1
2
3
4
5
| rgbviewer.cpp: In member function ‘virtual void RGBViewer::accept()’:
rgbviewer.cpp:19: error: expected primary-expression before ‘(’ token
rgbviewer.cpp:19: error: expected primary-expression before ‘.’ token
rgbviewer.cpp:20: error: expected primary-expression before ‘.’ token
rgbviewer.cpp:21: error: expected primary-expression before ‘.’ token
|
All this means is that I need to initialize the type ‘Ui_RGBViewerClass’ as the compiler does not understand it. In other words, I need to use a new.
Here is the ‘fixed’ version below of the same code snippet.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| Ui::RGBViewerClass ui; //Defined in the header; shown here for completness
void RGBViewer::accept() {
QMessageBox::information(this, "Button Clicked", "You clicked OK", QMessageBox::Ok);
QColor color = QColor(ui.spinBoxRed->value(),
ui.spinBoxGreen->value(),
ui.spinBoxBlue->value(),
255);
qDebug() << color;
QBrush brush(color);
brush.setStyle(Qt::SolidPattern);
ui.graphicsView->setBackgroundBrush(brush);
ui.graphicsView->backgroundBrush();
}
|