Здравствуйте есть QfileSystemModel(файловая система) представленная в QListView QTreeView QTableView
вообщем есть коннекты
connect(ui->treeview->selectionModel(),SIGNAL(currentChanged(QModelIndex,QModelIndex)),SLOT(smenaindeksa(QModelIndex,QModelIndex)));
connect(ui->treeview_2->selectionModel(),SIGNAL(currentChanged(QModelIndex,QModelIndex)),SLOT(smenaindeksa(QModelIndex,QModelIndex)));
connect(ui->tableview->selectionModel(),SIGNAL(currentChanged(QModelIndex,QModelIndex)),SLOT(smenaindeksa(QModelIndex,QModelIndex)));
connect(ui->tableview_2->selectionModel(),SIGNAL(currentChanged(QModelIndex,QModelIndex)),SLOT(smenaindeksa(QModelIndex,QModelIndex)));
connect(ui->listView_3->selectionModel(),SIGNAL(currentChanged(QModelIndex,QModelIndex)),SLOT(smenaindeksa(QModelIndex,QModelIndex)));
connect(ui->listView_4->selectionModel(),SIGNAL(currentChanged(QModelIndex,QModelIndex)),SLOT(smenaindeksa(QModelIndex,QModelIndex)));
коннекты соответственно срабатывают при смене индекса в отображении
public slots:
void smenaindeksa(QModelIndex,QModelIndex);
собственно слот который обрабатывает сигнал currentChanged
void MainWindow::smenaindeksa(QModelIndex index1, QModelIndex index2)
{
if (vybor==2) // значит мы выбрали с помощью мыши
{
}
if (vybor==1) // выбрали коннект с помощью стрелочек
if (tekokno==1) //текущее окно центральное
{
if (elemaktiven==1)
{
on_treeView_pressed(index1);
}
if (elemaktiven==2)
{
on_tableView_pressed(index1);
}
if (elemaktiven==3) /
{
on_listView_3_pressed(index1);
}
}
if (tekokno==2) //ЕУМЙ БЛФЙЧОП РТБЧПЕ ПЛОП
{
if (elemaktiven==4)
{
on_treeView_2_pressed(index1);
}
if (elemaktiven==5) //
{
on_tableView_2_pressed(index1);
}
if (elemaktiven==6) //
{
on_listView_4_pressed(index1);
}
}
}
}
Соответсвенно keypressEvent переопределен у всех 3 классов mytreeview mylistview mytableview
void mylistview::keyPressEvent(QKeyEvent *event) // РЕТЕПРТЕДЕМЕОЙЕ ЪБЦБФЙС ЛМБЧЙЫЙ (УПВЩФЙЕ РТЙ ОБЦБФЙЙ ОБ ЛМБЧЙЫЙ
{
if (event->key()==Qt::Key_Up | event->key()==Qt::Key_Down | event->key()==Qt::Key_Left | event->key()==Qt::Key_Right)
{
vybor=1; // устанавливаем переменную в единицу значит мы меняем индекс с помощью стрелок
}
QListView::keyPressEvent(event);
}
соответственно установлены фильтры
ui->listView_3->viewport()->installEventFilter(this);
ui->listView_4->viewport()->installEventFilter(this);
bool MainWindow::eventFilter(QObject *target, QEvent *event)
{
if (mouseEvent->button()==Qt::LeftButton)
{
vybor=2; // РЕТЕЛМАЮЕОЙЕ РТПЙУИПДЙФ РПУТЕДУФЧПН НЩЫЙ
return false;
}
}
в случае клика мышкой представлению мы устанавливаем переменную в двойку
проблема в том что в выводе приложения
пишет следующее
QObject::connect: Cannot connect (null)::currentChanged(QModelIndex,QModelIndex) to MainWindow::smenaindeksa(QModelIndex,QModelIndex)
QObject::connect: Cannot connect (null)::currentChanged(QModelIndex,QModelIndex) to MainWindow::smenaindeksa(QModelIndex,QModelIndex)
QObject::connect: Cannot connect (null)::currentChanged(QModelIndex,QModelIndex) to MainWindow::smenaindeksa(QModelIndex,QModelIndex)
QObject::connect: Cannot connect (null)::currentChanged(QModelIndex,QModelIndex) to MainWindow::smenaindeksa(QModelIndex,QModelIndex)
Итого получается что из 6 коннектов 4 не проходит
Как решить проблему?