Я новичок. С QT только начал разбираться. Если можно обьясните как можно проще. Я не программист по образованию))
Значит есть 2 класса. Один производный от QMainWindow (СMainWindow). Другой от QWidget (СGraph). СGraph я делаю центральным виджетом CMainWindow. Создаю меню главного окна и строку состояния.
.......
CMainWindow()//конструктор
{
//устанавливаю центральный виджет
pGraph = new CGraph;
setCentralWidget(pGraph);
//создаю меню
QMenu *pBehaviorMenu = new QMenu("&Behavior");
pBehaviorMenu->addAction("Select Area",this,SLOT(SelectObjectsMsg()),QKeySequence("A"));
pBehaviorMenu->addAction("Move Objects",this,SLOT(MoveSelectedObjectsMsg()),QKeySequence("W"));
menuBar()->addMenu(pBehaviorMenu);
StatusBar = new QLabel(this);
statusBar()->addPermanentWidget(StatusBar);//устанавливаем и настраиваем строку состояния
}
void MoveSelectedObjectsMsg()
{
pGraph->SetBehavior(MOVE_SELECTED);//эта функция должна вызываться при выборе пункта меню "Select Area"
}
void SelectObjectsMsg()
{
pGraph->SetBehavior(AREA_SELECT);//эта функция должна вызываться при выборе пункта меню "Move Objects"
}
............
private:
CGraph* pGraph;
QLabel *StatusBar;
Из меню главного окна я вызываю функции виджета pGraph, который работает со своими данными, результаты работы частично отображаются в строке состояния. У меня меню задаёт некий режим работы виджета pGraph. Нельзя ли сделать так чтобы при вызове соответсвующий команды меню в сигнале посылался параметр (например режима работы)? Я попробывал сделать как ниже но не получилось, слоты не реагируют на сигналы.
......
CMainWindow()
{
pBehaviorMenu->addAction("Select Area",pGraph,SLOT(SelectObjectsMsg(1)),QKeySequence("A"));
pBehaviorMenu->addAction("Move Objects",pGraph,SLOT(MoveSelectedObjectsMsg(2)),QKeySequence("W"));
}
......
class CGraph: public QWidget
{
..........
public slots:
void SelectObjectsMsg(const char&)
{
.....
}
void MoveSelectedObjectsMsg(const char&)
{
.....
}
}
Как мне сделать так, что бы при вызове соответсвующей команды меню, вызывалась нужная мне функция другого виджета, в которую бы передавался параметр в зависимости от выбранного пункта меню?
А то примером сверху мне приходилось дублировать функции.