25 Şubat 2020 Salı

QGraphicsView Sınıfı

resize metodu
Örnek
Şöyle yaparız.
int main(int argc, char *argv[])
{
  QApplication a(argc, argv);
  QGraphicsScene scene;
  QGraphicsView view(&scene);
  
  QGraphicsTextItem *textItem = new QGraphicsTextItem("Stack Overflow");
  scene.addItem(textItem);
  
  view.show();
  view.resize(640, 480);
  return a.exec();
}

9 Şubat 2020 Pazar

QTimer Sınıfı

Giriş
Şu satırı dahil ederiz.
#include <QTimer>
Timer sınıfı yaratıldığı thread tarafından başlatılabilir ve durdurulabilir. Yoksa şöyle bir hata alırız.
QObject::~QObject: Timers cannot be stopped from another thread
Handler Metod
Normalde bu metodun parametre almayan bir imzaya sahip olması gerekir.

Örnek
Eğer parametre geçmek istersek şöyle yaparız. Buradar SLOT(timeout()) yerine direkt &QTimer::timeout adresi geçiliyor. Bence bu şekilde kullanmamak lazım.
int interval = 500;
int data = 42;

QTimer *timer = new QTimer(this);
connect(timer, &QTimer::timeout, [data] {
    /* Implement your logic here */
});
isActive  metodu
Şöyle yaparız.
if(timer.isActive()){
  timer.stop();
}
setSingleShot metodu
Şöyle yaparız.
m_pTimer->setSingleShot(true);
timeout Signal
Şöyle yaparız.
connect(m_pTimer, SIGNAL(timeout()), this, SLOT(perform()));

void MyTask::perform()
{
  ...
}
setInterval metdou
Şöyle yaparız.
timer.setInterval(3000);
singleShot metodu - static
Şöyle yaparız.
QTimer::singleShot(10, [=](){
   // do some stuff
});
start metodu
MainWindow sınıfında şöyle yaparız.
QTimer *m_pTimer = new QTimer(this);
connect(m_pTimer, SIGNAL(timeout()), this, SLOT(updateProgress()));
m_pTimer->start(40);
Handler kodu şöyledir
void MainWindow::updateProgress()
{
  ...
}
stop metodu
Şöyle yaparız.
m_pTimer->stop();