Измучалась уже вся, делаю по книге Бланшет и Саммерфилд программу.
С меню проблемы. У подруги вроде бы работает, она тоже по книге делала - у меня нет!
Вот mainwindow.cpp
Код:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtGui>
#include <QMenu>
#include <QMenuBar>
#include <QWidget>
MainWindow::MainWindow()
{
createActions();
createMenu();
setWindowTitle("name");
gen = new QPushButton("gen");
qtextbox = new QTextEdit("tesxtbox");
combo = new QComboBox;
QHBoxLayout *m1 = new QHBoxLayout;
m1->addWidget(gen);
m1->addWidget(qtextbox);
QVBoxLayout *m2 = new QVBoxLayout;
m2->addWidget(combo);
m2->addLayout(m1);
setLayout(m2);
qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
combo->addItem(QString::fromLocal8Bit("Одно число"));
combo->addItem(QString::fromLocal8Bit("Несколько"));
setFixedSize(500,500);
}
int getnumber(int a)//данная функция возвращает количество вариантов генерируемого типа поля
{
int b[20];
b[1]=16;
return b[a];
}
int randnumber(int a)//данная функция возвращает случайный номер задания для массива
{
a = qrand()%(a-0+1)+0;
return a;
}
QString listofgenfield(int a,int b)
{
if(b==2){a+=16;}
QString S;
QStringList list;
list << "min"
<< "max"
<< "min по модулю"
<< "max по модулю"
<< "первое равное нулю"
<< "числа, модуль которых лежит в диапазоне [a,b]";
S = list[a];
return S;
}
void MainWindow::on_gen_clicked()
{
QString str = qtextbox->toPlainText();
int a;
for(int i=0;i<str.size();i++)
{
if((str[i]=='*') && (str[i+1]=='*') && (str[i+2]=='*') && (str[i+4]=='*') && (str[i+5]=='*') && (str[i+6]=='*'))
{
QString b = str.mid(i+3,1);
bool ok;
a=b.toInt(&ok);
b = listofgenfield(randnumber(getnumber(a)),a);
str.replace(i,7, QString::fromLocal8Bit(b.toAscii()));
qtextbox->clear();
qtextbox->insertPlainText(str);
a=0;
}
}
}
void MainWindow::on_combo_activated(QString )
{
if(combo->currentText()==QString::fromLocal8Bit("Одно число"))
{
qtextbox->textCursor().insertText("***1***");
}
else if(combo->currentText()==QString::fromLocal8Bit("Несколько"))
{
qtextbox->textCursor().insertText("***2***");
}
else
{
qtextbox->textCursor().insertText("***3***");
}
}
void MainWindow::createActions()
{
/* qtemp = new QAction(tr("Temp"),this);
qtask = new QAction(tr("Task"),this);
qdel = new QAction(tr("Delete"),this);*/
qexit = new QAction(tr("exit"),this);
connect(qexit,SIGNAL(triggered()),this,SLOT(close()));
}
void MainWindow::createMenu()
{
qmenu= menuBar()->addMenu(tr("Menu"));
/*qmenu->addAction(qtemp);
qmenu->addAction(qtask);
qmenu->addAction(qdel);*/
separatorAction = qmenu->addSeparator();
qmenu->addAction(qexit);
}
MainWindow.h
Код:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QDialog>
class QPushButton;
class QAction;
class QMenu;
class QTextEdit;
class QComboBox;
class MainWindow : public QDialog
{
Q_OBJECT
public:
MainWindow();
private:
void createActions();
void createMenu();
QPushButton *gen;
/* QAction *qtemp;
QAction *qtask;
QAction *qdel;*/
QAction *qexit;
QAction *separatorAction;
QMenu *qmenu;
QTextEdit * qtextbox;
QComboBox *combo;
private slots:
void on_combo_activated(QString );
void on_gen_clicked();
};
#endif // MAINWINDOW_H
main.cpp
Код:
#include <QtGui/QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
у меня такое предчувствие, что вообще ни одна функция просто не работает. и menuBar() не работает.
Помогите пожалуйста. Уже не знаю, что делать.