Russian Qt Forum
Ноябрь 24, 2024, 15:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: Сигналы и слоты, текущее время в компоненте типа Qtimeedit.  (Прочитано 13301 раз)
andrew.k
Гость
« Ответ #15 : Февраль 15, 2012, 17:02 »

Ладно, ты мне ответь, вот есть наш случай:

Код:
class Foo
{
  public:
    Foo();

  protected:
    m_member;
}

class Boo : public Foo
{
  public:
    Boo();
}

Скажи, из Boo мы можем обратиться напрямую к m_member?
Прочитай пару раз свою Алену, узнаешь.
Записан
sudo
Гость
« Ответ #16 : Февраль 15, 2012, 17:02 »

Ты мне не как Одессит, а нормально ответь
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #17 : Февраль 15, 2012, 17:04 »

естественно можем
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
andrew.k
Гость
« Ответ #18 : Февраль 15, 2012, 17:04 »

Ты мне не как Одессит, а нормально ответь
Это основы с++, если ты этого не знаешь, это печально.
Записан
andrew.k
Гость
« Ответ #19 : Февраль 15, 2012, 17:08 »

естественно можем
антисемит!
Записан
sudo
Гость
« Ответ #20 : Февраль 15, 2012, 17:12 »

естественно можем

Да понятно, что можем, но меня Андрей старательно убеждал, что protected не будет достаточно для ТС.
Ну и уровень доступа тоже можно поменять Подмигивающий Только если приходится это делать, значит что-то написано не так...
« Последнее редактирование: Февраль 15, 2012, 17:17 от sudo » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #21 : Февраль 15, 2012, 17:22 »

ТС вообще какими-то извращениями занимается, о чём ему уже сказали. разве что конечно у него или приложение имеет 2 главных окна (так разве делают?) или MainWindow - это какой-то лично свой базовый класс всех главных окон при разработке приложений.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
sudo
Гость
« Ответ #22 : Февраль 15, 2012, 17:25 »

Извращение у него только в использовании отнаследованного от MainWindow MyClassa, он нафиг не нужен - это точно. А так, MainWindow - главное окно, всё нормально Улыбающийся
Записан
Gate007
Гость
« Ответ #23 : Февраль 17, 2012, 11:11 »

Я премного счастлив что тема вызвала столь бурную дискуссию и заставила кого-то размышлять о смысле программирования/жизни.
Все что я понял из вашей дискуссии-что мне не нужен класс myclass. Хорошо, пусть без него.
Тогда выходит:
Код
C++ (Qt)
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
 
namespace Ui {
   class MainWindow;
}
 
class MainWindow : public QMainWindow
{
   Q_OBJECT
 
public:
   explicit MainWindow(QWidget *parent = 0);
   ~MainWindow();
 
private:
   Ui::MainWindow *ui;
public slots:
      void mySlot();
};
 
 
#endif // MAINWINDOW_H
Здесь все понятно, вопросов нет.

cpp:
Код
C++ (Qt)
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QTime"
#include "QTimer"
 
 
MainWindow::MainWindow(QWidget *parent) :
   QMainWindow(parent),
   ui(new Ui::MainWindow)
{
   ui->setupUi(this);
   QTimer mytimer;
   QObject::connect(&mytimer, SIGNAL( timeout() ),
                     this,  SLOT(mySlot()));
}
 
void MainWindow::mySlot()
{
QTime time_obj;
ui->timeEdit->setTime(time_obj.currentTime());
}
 
MainWindow::~MainWindow()
{
   delete ui;
}
Но слот mySlot не вызывается. Что не так? Насколько я понял, mytimer, SIGNAL( timeout() ) вырабатывается каждую секунду.
Записан
sudo
Гость
« Ответ #24 : Февраль 17, 2012, 11:15 »

Таймер запусти Подмигивающий Метод start
Только полем класса сделай, а то помрёт при завершении работы конструктора
« Последнее редактирование: Февраль 17, 2012, 11:17 от sudo » Записан
Gate007
Гость
« Ответ #25 : Февраль 17, 2012, 13:37 »

Таймер запусти Подмигивающий Метод start
Только полем класса сделай, а то помрёт при завершении работы конструктора
Спасибо, что то я про старт и забыл Улыбающийся
А можно подробнее почему он должен помирать? Точнее не должен, а правда помирает Улыбающийся
Записан
mutineer
Гость
« Ответ #26 : Февраль 17, 2012, 13:44 »

Потому что создан на стеке в методе - то есть это локальная переменная метода. Дальше - в справке по плюсам
Записан
Gate007
Гость
« Ответ #27 : Март 12, 2012, 13:46 »

Код особо не изменился, много думал, поправил.
Следующая проблема-после старта таймера загрузка цп 100%. Не понимаю причины, единственное что приходит в голову-возможно проблема в работе на виртуалке, на которой стоит Qt creator?
Код
C++ (Qt)
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
#include "QTime"
#include "QTimer"
namespace Ui {
   class MainWindow;
}
 
class MainWindow : public QMainWindow
{
   Q_OBJECT
 
public:
   explicit MainWindow(QWidget *parent = 0);
   ~MainWindow();
   QTimer mytimer;
   QDate curDate;
private:
   Ui::MainWindow *ui;
public slots:
      void mySlot();
};
 
 
#endif // MAINWINDOW_H

Код
C++ (Qt)
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QTime"
#include "QTimer"
#include "QDate"
 
 
MainWindow::MainWindow(QWidget *parent) :
   QMainWindow(parent),
   ui(new Ui::MainWindow)
{
   ui->setupUi(this);
   mytimer.start();
   QObject::connect(&mytimer, SIGNAL( timeout() ),
                     this,  SLOT(mySlot()));
   curDate = QDate::currentDate();
}
 
void MainWindow::mySlot()
{
QTime time_obj;
ui->timeEdit->setTime(time_obj.currentTime());
ui->lcdNumber_2->display(curDate.toString("d"));
}
 
MainWindow::~MainWindow()
{
   delete ui;
}
Записан
mutineer
Гость
« Ответ #28 : Март 12, 2012, 13:49 »

Проблема в том, что ты таймеру не выставил интервал и он фигачит timeout() в каждый проход EventLoop, то бишь практически каждую свободную милисекунду
Записан
Gate007
Гость
« Ответ #29 : Март 12, 2012, 14:11 »

Спасибо! Все получилось Улыбающийся
P.S: для "самых маленьких": таймаут выставляется в методе Start.
Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.125 секунд. Запросов: 23.