Название: [решено] Обращение к виджетам в main.cpp из mainwindow.cpp Отправлено: HirurG. от Апреля 17, 2011, 18:04 В файле main.cpp описаны виджеты классов QLineEdit и QTableWidget При изменении значения в QLineEdit поступает сигнал в слот setRange(), описанный в mainwindow.cpp. Как в реализации этого сигнала изменить количество строк в QTableWidget?
Вот мой код: main.cpp Код: #include <QtGui/QApplication> Код: #ifndef MAINWINDOW_H Код: #include "mainwindow.h" Код: tbl.setRowCount(strN); /home/.../mainwindow.cpp:14: error: ‘tbl’ was not declared in this scope Название: Re: Обращение к виджетам в main.cpp из mainwindow.cpp Отправлено: alexman от Апреля 17, 2011, 18:14 Так где у вас tbl объявлено?
Название: Re: Обращение к виджетам в main.cpp из mainwindow.cpp Отправлено: HirurG. от Апреля 17, 2011, 18:16 Так где у вас tbl объявлено? tbl объявлено в main.cpp, в 20-й строкеНазвание: Re: Обращение к виджетам в main.cpp из mainwindow.cpp Отправлено: blood_shadow от Апреля 17, 2011, 18:22 mainwindow.h и mainwindow.cpp - первая единица компиляции
main.cpp и mainwindow.h - вторая единица компиляции ты определил tbl в одной единице компиляции, а пытаешься использовать в другой, попросту говоря, ф-ция: Код: void MainWindow::setRange(QString strN) ничего незнает о tbl, который определен в main.cpp и к тому же tbl - локальная переменная, видимая только в блоке с открывающей скобкой и до закрывающей, короче чтобы можно было изменять количество столбцов с главного окна, ему нужно передать указатель или ссылку на этот QTableWidget, хотя мне кажется что QTableWidget можно сделать членом класса MainWindow если они логически связанны, и не требуется отдельно его использовать Название: Re: Обращение к виджетам в main.cpp из mainwindow.cpp Отправлено: HirurG. от Апреля 17, 2011, 18:31 ... чтобы можно было изменять количество столбцов с главного окна, ему нужно как мне этот указатель или ссылку прописать? а то я уже перепробовал всё что мог, но не получилосьпередать указатель или ссылку на этот QTableWidget, хотя мне кажется что QTableWidget можно сделать членом класса MainWindow если они логически связанны, и не требуется отдельно его использовать Название: Re: Обращение к виджетам в main.cpp из mainwindow.cpp Отправлено: alexman от Апреля 17, 2011, 18:36 Может стоит таблицу в MainWindow хранить/создавать...
Название: Re: Обращение к виджетам в main.cpp из mainwindow.cpp Отправлено: blood_shadow от Апреля 17, 2011, 18:42 header
Код
с меин убрать QTableWidget tbl(n, n); поставить вместо (n, n) размерность или создавать пустую таблицу, а потом через ф-цию менять ее размерность Название: Re: Обращение к виджетам в main.cpp из mainwindow.cpp Отправлено: HirurG. от Апреля 17, 2011, 18:50 Может стоит таблицу в MainWindow хранить/создавать... если компоненты хранить/создавать в MainWindow, то вообще пустое окно появляетсянапример: main.cpp Код: #include <QtGui/QApplication> Код: #include <QtGui> Название: Re: Обращение к виджетам в main.cpp из mainwindow.cpp Отправлено: blood_shadow от Апреля 17, 2011, 19:08 1. setupUi(this) делается в самом начале конструктора
2. QTableWidget tbl(n, n); - ты его сделал локальным членом, таблица существует только в конструкторе, сделай объявление таблицы как я писал выше в объявлении класса внутри же класса таблицу просто используй по имени tbl метод Код: void MainWindow::setRange(QString strN) незнает что такое tbl, так как таблица локальна в конструкторе Название: Re: Обращение к виджетам в main.cpp из mainwindow.cpp Отправлено: HirurG. от Апреля 17, 2011, 19:23 1. setupUi(this) делается в самом начале конструктора я что-то не понял, как в заголовочном файле надо прописать?2. QTableWidget tbl(n, n); - ты его сделал локальным членом, таблица существует только в конструкторе, сделай объявление таблицы как я писал выше в объявлении класса внутри же класса таблицу просто используй по имени tbl Название: Re: Обращение к виджетам в main.cpp из mainwindow.cpp Отправлено: blood_shadow от Апреля 17, 2011, 19:46 Код
в конструкторе используешь по имени таблицу Код
примерно так Название: Re: Обращение к виджетам в main.cpp из mainwindow.cpp Отправлено: HirurG. от Апреля 17, 2011, 19:59 ??? значит я тебя правильно понял. просто теперь строка
Код: QTableWidget tbl(3, 3); mainwindow.h:22: error: expected ‘,’ or ‘...’ before numeric constant Название: Re: Обращение к виджетам в main.cpp из mainwindow.cpp Отправлено: blood_shadow от Апреля 17, 2011, 20:02 прикрепи свой проект, я как вернусь посмотрю
Название: Re: Обращение к виджетам в main.cpp из mainwindow.cpp Отправлено: HirurG. от Апреля 17, 2011, 20:10 вот архив проекта
Название: Re: Обращение к виджетам в main.cpp из mainwindow.cpp Отправлено: blood_shadow от Апреля 17, 2011, 22:27 все поправил
самое больше что мне не понравилось это твои имена переменных, уж очень они не очевидные посмотри на то как тролли обзивают свои переменные, попробуй в том духе Название: Re: Обращение к виджетам в main.cpp из mainwindow.cpp Отправлено: HirurG. от Апреля 18, 2011, 06:01 все поправил Спасибо большое! :) Просто это моя первая самостоятельная программка с Qt, ещё не во всём разобрался. А каких троллей ты имел в виду? :)самое больше что мне не понравилось это твои имена переменных, уж очень они не очевидные посмотри на то как тролли обзивают свои переменные, попробуй в том духе Название: Re: [решено] Обращение к виджетам в main.cpp из mainwindow.cpp Отправлено: alexman от Апреля 18, 2011, 07:57 И еще почитай про ООП ;)
Название: Re: Обращение к виджетам в main.cpp из mainwindow.cpp Отправлено: blood_shadow от Апреля 18, 2011, 09:38 А каких троллей ты имел в виду? :) разработчики Qt компания Trolltech, их код я ставлю в примерНазвание: Re: Обращение к виджетам в main.cpp из mainwindow.cpp Отправлено: HirurG. от Апреля 18, 2011, 14:02 А каких троллей ты имел в виду? :) разработчики Qt компания Trolltech, их код я ставлю в пример |