Дык прикол в том, что
тот же самый код сначала вызывал ошибку, но стоило запустить такое шаманское действие, как запустить отладчик, как проблема сама собой исчезла.
Вот провёл эксперимент:
Добавил в заголовочный файл виджета в графу private: QColor C1,C2,C3,C4,C5;:
(Тут у меня код немного дописан, но он ещё работает. Кроме того что написано ниже больше ничего не менялось.)
class CPUWidget : public QWidget
{
...
private:
enum {LineAssemblyRegisters,LineMemoryKesh,LineAssemblyMemory};
QColor ColorBackground,ColorSelected,ColorBox,ColorLines,ColorText;
float qAssemblyRegisters,qMemoryKesh,qAssemblyMemory;
int XAssemblyRegisters,XMemoryKesh,YAssemblyMemory;
int mouseMoveElement;
QColor C1,C2,C3,C4,C5;
};
Программа сразу же перестала запускаться.
В конструкторе виджета так же их определил, но проблема не исчезла.
Отладчик говорит Segmentation fault.
Трейсер останавливается на строке:
void setupUi(QMainWindow *MainWindow)
{
if (MainWindow->objectName().isEmpty())
MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
MainWindow->resize(600, 400);
centralWidget = new QWidget(MainWindow);
centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
verticalLayout = new QVBoxLayout(centralWidget);
verticalLayout->setSpacing(6);
verticalLayout->setContentsMargins(11, 11, 11, 11);
verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
CPU = new CPUWidget(centralWidget);
CPU->setObjectName(QString::fromUtf8("CPU")); //<-- Тут
verticalLayout->addWidget(CPU);
MainWindow->setCentralWidget(centralWidget);
menuBar = new QMenuBar(MainWindow);
...
}
Тоже самое происходит, если определить переменные как int.
Стоит это убрать, как всё опять начинает работать.
Вот я и не могу определить где у меня косяк.
P.S. Код реализации немного вырос, но если надо, то выложу.
Пользователь решил продолжить мысль 10 Июля 2010, 11:44:13:
Хе, кажется я понял в чём была проблема.
При создании проекта я на будущее включил поддержку OpenGL и даже создал небольшой класс на QGLWidget, но нигде его не подключал. Однако никакой гарантии, что он был написан верно нет. Попробовал снять поддержку OpenGL и убрать этот класс - заработало. Также попробовал включить OpenGL, но без класса - продолжает работать.
Даже и не подумал, что просто слева стоящий класс который включён в проект, но нигде не используется может так повлиять.