Home

vk: Sitara Linux Training: Hands on with QT - Texas

Date: 2017-10-30 14:15

#помощь@cppstudio
ИЗВИНЯЮСЬ, НАШЁЛ (но для других оставлю тут, мало ли я тут не один такой с такой проблемой)
НАДО ДОБАВИТЬ В про файл QT += network
всем доброго времени суток.
для самообразования решил написать своё сервер-клиент приложение, для начала как тут (начал с серверной части) http://qt-doc.ru/realizacia-servera-s-pomoschu-klassa-qtcpserver.html
только консольное. В итоге на такой код ругаются, не собирается

#ifndef PM_MUSSERVER_H
#define PM_MUSSERVER_H
#include <QMap>
#include <QFile>
#include <QtNetwork/QTcpServer>
#include <QtNetwork/QTcpSocket>
class PM_MusServer : public QObject//зачем сервер виджет если можно //консоль
{
Q_OBJECT
public:
quint16 m_nNextBlockSize;
QTcpServer [club85834623|*tcp_server];
public:
explicit PM_MusServer(QObject [id2956970|*parent] = 0);
void send_to_client(QTcpSocket* soket, const QString str);

signals:

public slots:
virtual void newconnection();
void readclient();
};

#endif // PM_MUSSERVER_H

#include "pm_musserver.h"

PM_MusServer::PM_MusServer( QObject [id2956970|*parent]) : QObject(parent)
{
tcp_server=new QTcpServer(this); //РУГАЕТСЯ ТУТ (неопределена ссылка на QTcpServer::QTcpServer(QObject)
}

void PM_MusServer::send_to_client(QTcpSocket [id279680888|*soket], const QString str){}
void PM_MusServer::newconnection(){}

void PM_MusServer::readclient(){}

Обгуглился, во всех примерах такой же код

Подробнее


уважаемые подскажите, разбираюсь с сигналами и слотами QT, такой вопрос такой сигнал-слот QObject::connect(ui->Button, SIGNAL(clicked()), this, SLOT(on_Button_clicked())); может ли вызвать как бы двойной клик на кнопке? Например кнопка открывает диалоговое окно, откроет ли она его два раза?

Подробнее


#cppVideos@prog_hub

Уроки Qt C++ [eng]
Часть 7.

1. Compiling Qt Creator for making your own widgets
2. Viewer Feedback Signals and Slots in depth
3. Introduction to Network Programming Concepts
4. QHttp download files from the web with ease
5. QTcpSocket basics
6. QTCPSocket using signals and slots
7. QTCPServer - a basic TCP server application
8. QTcpServer using multiple threads
9. QTcpServer using QThreadPool
10. Advanced Asynchronous QTcpServer with QThreadPool

Подробнее


#cppVideos@prog_hub

Уроки Qt C++ [eng]
Часть 1.

1. Введение в программирование в Qt
2. Первая программа. Hello world.
3. Введение в программирование графического интерфейса
4. Сигналы и слоты
5. Отображение окна
6. Макеты, вкладки
7. Базовые приложения и HTML виджеты
8. Вертикальное и горизонтальное расположение
9. QGridLayout
10. Splitters

А так же в нашем альбоме Qt C++ уже больше 100 лучших видео уроков:
http://vk.cc/4ZDMgU

Подробнее


#cppVideos@prog_hub

Уроки Qt C++ [eng]
Часть 1.

1. Введение в программирование в Qt
2. Первая программа. Hello world.
3. Введение в программирование графического интерфейса
4. Сигналы и слоты
5. Отображение окна
6. Макеты, вкладки
7. Базовые приложения и HTML виджеты
8. Вертикальное и горизонтальное расположение
9. QGridLayout
10. Splitters

Подробнее


[id253050|Никита],
> Qt это библиотека а не яп

ORLY?
в С++ нет signals и slots
Конечно, С++ тоже можно считать парсером для С, но... )

> апиха есть, silica

The Sailfish SDK includes Sailfish Silica, a QML module for developing your own Sailfish applications.

Таки, оно в экосистеме Qt!

Подробнее


#помощь@cppstudio
Кто разбирается в Qt, подскажите на счет сигналов-слотов, никак я не могу понять как эта хрень должна работать. Примеры в сети хреновые, в основном элементарные, типа:
connect(&Button,SIGNAL(clicked(bool)),&Base,SLOT(close());
Вот мой говнокод: http://ideone.com/cpNlsi
Вот примерная схема того, как это должно работать 👇
Мне не понятно, как из производного класса от QWidget, из которого я потом делаю top-level виджет окна, получить доступ к производным от него виджетам, таким как QLineEdit, QComboBox.
То есть при нажатии QButton, надо получить значения от ComboBox'ов и от LineEdit'a.

Подробнее


Alexey Smirnov поинтересовался: «qt как правильно сделать connect»
-------------------------------------
mainwindow:

ui->tableView->setItemDelegateForColumn(model->fieldIndex("attach"), new buttonDelegate(ui->tableView)); //кнопка в таблице делегат

далее сам делегат buttondelegate.cpp

bool buttonDelegate::editorEvent(QEvent * event, QAbstractItemModel * model, const QStyleOptionViewItem &option, const QModelIndex &index)
{
if( event->type() == QEvent::MouseButtonRelease )
{
QMouseEvent * e = (QMouseEvent *)event;
int clickX = e->x();
int clickY = e->y();

QRect r = option.rect;
int x,y,w,h;
x = r.left() + r.width() - 30;
y = r.top();
w = 30;//ширина кнопки
h = 30;//высота кнопки

//если попали в кнопку
if( clickX > x && clickX < x + w )
if( clickY > y && clickY < y + h )
{
int row = index.row();
emit createNewUpload(row);

}
}
}

по нажатию делегата должно открыться окно

void MainWindow::uploadFile(int row)
{
uploadFile_window = new uploadFileForm();
uploadFile_window->orderinfo(row);
uploadFile_window->show();
}

ну и так далее

ВОПРОС как сделать connect при нажатии на делегат-кнопку. Ведь он еще не создан до нажатия. Ну и если это вообще не по "госту" как правильно.

connect(что тут писать?,SIGNAL(createNewUpload(int row)),this,SLOT(uploadFile(int row)));

Вопрос задан 2 минуты назад (0 ответов)
#stackoverflow #qt

Подробнее


Mastering Qt 5
#enprogbooks@iamdev
**********************************************
Author: Guillaume Lazar, Robin Penea
Pub Date: 2017
**********************************************
Master application development by writing succinct, robust, and reusable code with Qt 5
Qt 5.7 is an application development framework that provides a great user experience and develops full-capability applications with Qt Widgets, QML, and even Qt 3D.
This book will address challenges in successfully developing cross-platform applications with the Qt framework. Cross-platform development needs a well-organized project. Using this book, you will have a better understanding of the Qt framework and the tools to resolve serious issues such as linking, debugging, and multithreading. Your journey will start with the new Qt 5 features.
Then you will explore different platforms and learn to tame them. Every chapter along the way is a logical step that you must take to master Qt. The journey will end in an application that has been tested and is ready to be shipped.
What You Will Learn

● Create stunning UIs with Qt Widget and Qt Quick
● Develop powerful, cross-platform applications with the Qt framework
● Design GUIs with the Qt Designer and build a library in it for UI preview
● Handle user interaction with the Qt signal/slot mechanism in C++
● Prepare a cross-platform project to host a third-party library
● Build a Qt application using the OpenCV API
● Use the Qt Animation framework to display stunning effects
● Deploy mobile apps with Qt and embedded platforms

Подробнее


Уроки Qt C++ [eng]
Часть 13.

1. Singleton patterns and signals
2. Review of Qt 5.4
3. Single Instance Applications
4. QtConcurrent Run a thread with signals and slots
5. QtConcurrent blockingMap
6. QtConcurrent Mapped
7. QtConcurrent Filter
8. QtConcurrent Filtered
9. QtConcurrent FilterReduce and QFuture
10. QFutureWatcher

А так же в нашем альбоме Qt C++ уже больше 100 лучших видео уроков:
http://vk.cc/4ZDMgU

Подробнее


#cppVideos

Уроки Qt C++ [eng]
Часть 7.

1. Compiling Qt Creator for making your own widgets
2. Viewer Feedback Signals and Slots in depth
3. Introduction to Network Programming Concepts
4. QHttp download files from the web with ease
5. QTcpSocket basics
6. QTCPSocket using signals and slots
7. QTCPServer - a basic TCP server application
8. QTcpServer using multiple threads
9. QTcpServer using QThreadPool
10. Advanced Asynchronous QTcpServer with QThreadPool

А так же в нашем альбоме Qt C++ уже больше 100 лучших видео уроков:
http://vk.cc/4ZDMgU

Подробнее


#cppVideos

Уроки Qt C++ [eng]
Часть 1.

1. Введение в программирование в Qt
2. Первая программа. Hello world.
3. Введение в программирование графического интерфейса
4. Сигналы и слоты
5. Отображение окна
6. Макеты, вкладки
7. Базовые приложения и HTML виджеты
8. Вертикальное и горизонтальное расположение
9. QGridLayout
10. Splitters

А так же в нашем альбоме Qt C++ уже больше 100 лучших видео уроков:
http://vk.cc/4ZDMgU

Подробнее


#Новости
Добавлена новая модель создания соединений: http://pastebin.com/zbKtKApN

Эта модель является упрощённым вариантом стандартной. Преимущество её использования перед on*-свойствами в том, что можно явно указать какие параметры будут передаваться в функцию-слот.
Это подходит для сигналов, которые могут передавать разные типы аргументов.

Например, сигнал currentIndexChanged объекта QComboBox, согласно документации Qt, может передать как индекс нового значения, так и текст этого значения.
Если при создании соединения указать сигнатуру сигнала как "currentIndexChanged(int)", то в функцию-слот передастся индекс нового значения.
А если указать "currentIndexChanged(string)" - в функцию-слот передастся текст нового значения.

Подробнее


Отправка POST запроса на Qt
-------------------------------------
Отправляю Post запрос так:

QNetworkAccessManager * pManager = new QNetworkAccessManager;
connect(pManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinish(QNetworkReply*)));
pManager->post( QNetworkRequest(QUrl("http://www.s92640jz.bget.ru/register.php")), QString("login=login&pass=pass&open_key=open_key&key_size=key_size").toUtf8());

qDebug() « pManager;

На сервере лежит вот такой скрипт:

if (!empty($_POST["login"])&&!empty($_POST["pass"])&&!empty($_POST["open_key"])&&!empty($_POST["key_size"]))
{
echo "POST data:<br>";
echo "id - ";
echo $_POST["id"];
echo "<br>login - ";
echo $_POST["login"];
echo "<br>pass - ";
echo $_POST["pass"];
echo "<br>hash_value - ";
echo $_POST["hash_value"];
echo "<br>sault - ";
echo $_POST["sault"];
echo "<br>open_key - ";
echo $_POST["open_key"];
echo "<br>key_size - ";
echo $_POST["key_size"];
echo "<br>id_dialogs - ";
echo $_POST["id_dialogs"];
}

ПРоблема в том что в qDebug'е получаю ответ:

qt.network.ssl: QSslSocket: cannot resolve SSLv2_client_method
qt.network.ssl: QSslSocket: cannot resolve SSLv2_server_method
QNetworkAccessManager(0x91c50b8)
content-type missing in HTTP POST, defaulting to application/x-www-form-urlencoded. Use QNetworkRequest::setHeader() to fix this problem.

Что я не так делаю? Как мне послать post запрос с параметрами и получить ответ в виде строки?

Вопрос задан 2 мин. назад (0 ответов)
#stackoverflow #php #cpp #qt #post

Подробнее


Приём логов syslog на qt
-------------------------------------
Пытаюсь слушать UDP сокет порт 514 для того чтобы отловить приходящие от сервера логи. Проблема в том что командой

echo “hello” > /dev/udp/192.168.5.52/514

я получаю данные, а вот когда отправляют реальные логи, ничего нет.
В настройках syslog.conf указал

* .* @ 127.0.0.1:514

Сама программа приёма логов взята из документации qt:

void Server::initSocket()
{
udpSocket = new QUdpSocket(this);
udpSocket->bind(QHostAddress::LocalHost, 514);

connect(udpSocket, SIGNAL(readyRead()),
this, SLOT(readPendingDatagrams()));
}

void Server::readPendingDatagrams()
{
while (udpSocket->hasPendingDatagrams()) {
QByteArray datagram;
datagram.resize(udpSocket->pendingDatagramSize());
QHostAddress sender;
quint16 senderPort;

udpSocket->readDatagram(datagram.data(), datagram.size(),
&sender, &senderPort);

processTheDatagram(datagram);
}
}

Вопрос задан 8 мин. назад (0 ответов)
#stackoverflow #cpp #qt

Подробнее


Обучающие видео по созданию пользовательского интерфейса с помощью Qt.

Qt — кроссплатформенный инстурментарий для создания программного обеспечения, является фундаментом рабочего окружения KDE. Это фреймворк уже стал своего рода классикой, и вот, что вы узнаете про него из этой серии виедо:

1. Устанавливаем Qt SDK
2. Создаём простейший проект
3. Qt Creator
4. Основы приложения на Qt
5. Нюансы операторов
6. Сигналы и слоты
7. Спиннеры и слайды
8. Синхронизация виджетов и раскладок
9. Создаём первое реальное приложение (в 6 частях)

Завершаем разработку своего первого приложения:
Часть 3: https://youtu.be/pQHFqp0NK4E
Часть 4: https://youtu.be/6GyrKryOVJY
Часть 5: https://youtu.be/mn4t2tqncoA
Часть 6: https://youtu.be/-A5S9ka5H9A

#video@vkprogrammist

Подробнее


Обучающие видео по созданию пользовательского интерфейса с помощью Qt.

Qt — кроссплатформенный инстурментарий для создания программного обеспечения, является фундаментом рабочего окружения KDE. Это фреймворк уже стал своего рода классикой, и вот, что вы узнаете про него из этой серии виедо:

1. Устанавливаем Qt SDK
2. Создаём простейший проект
3. Qt Creator
4. Основы приложения на Qt
5. Нюансы операторов
6. Сигналы и слоты
7. Спиннеры и слайды
8. Синхронизация виджетов и раскладок
9. Создаём первое реальное приложение (в 6 частях)

Завершаем разработку своего первого приложения:
Часть 3: https://youtu.be/pQHFqp0NK4E
Часть 4: https://youtu.be/6GyrKryOVJY
Часть 5: https://youtu.be/mn4t2tqncoA
Часть 6: https://youtu.be/-A5S9ka5H9A

#video@tproger

Подробнее


Implementing callback in Qt
-------------------------------------
I want to implement some kind of callback in Qt.

I have a class called ApiHandler for making requests. And i should have a way to pass a function as callback to makeRequest and execute it when replyFinished.
I know a way using std::function/std::bind. But maybe there are ways to do this using Qt? Or more detailed explanation about using std::function/std::bind in this case.

Thanks!

typedef void ([id1795638|Евгений Несоответсвуетдействительности])();
void ApiHandler::makeRequest(QString method, QMap<QString, QString> parameters, callback)
{
QUrl url = this->buildCall(method, parameters);

connect(this->manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*, callback)));

QNetworkRequest request;
request.setUrl(url);
request.setRawHeader("User-Agent", "Test");

QNetworkReply [id5130687|Виталий Репли] = this->manager->get(request);
connect(reply, SIGNAL(readyRead()), this, SLOT(slotReadyRead()));
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(slotError(QNetworkReply::NetworkError)));
connect(reply, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(slotSslErrors(QList<QSslError>)));
}
void ApiHandler::replyFinished(QNetworkReply* reply, callback)
{
qDebug() « "replyFinished" « reply->url();
QJsonDocument j = QJsonDocument::fromJson(reply->readAll());
if (j.isEmpty()) {
// throw error
}

// call the callback with "j" as parameter
// callback(j)

reply->deleteLater();
}

Вопрос задан 1 мин. назад (0 ответов)
#stackoverflow #cpp #qt #cpp11

Подробнее


Парам-пам-пам.
Вот и вышел последний урок по обучению ООП.
Самое основное в них рассказано)
Скорее всего, я буду выпускать какие-нибудь дополнения к урокам, например алгоритмы сортировки и т.п. =)
Вот все видео по обучению ООП:

Подробнее


Вот и последний урок в ООП...
Скорее всего теперь будут выходить дополнения к урокам, потому что основную часть я рассказал =)

Подробнее


Я читал статью и комментарии тоже читал. Мне статья не понравилась, мне не понятно зачем вообще весь этот огород (в чем особенность его задачи). Он обрушивается на работу с шаблонами в Qt и на многое другое, но. НО, вот его задача:
» ...мне было необходимо сделать шаблонный класс-контроллер ... Контроллер должен был взаимодействовать с разнотипным целочисленными данными, связывая с ними QSpinBox в качестве GUI.

И далее код с шаблонам:
template< typename T_IntegralType >
class IntegralController {
private:
T_IntegralType *_modelField;
QSpinBox *_view;

А нафига, если как ты не крути, но QSpinBox
умеет работать только с int?

Т.е. мне вот непонятно о чем он думал вообще когда этот код писал:
QSpinBox [club114186123|) {
if (!_view] {
_view = new QSpinBox();
QObject::connect(_view, SIGNAL(valueChanged(int)),
this, SLOT(valueChanged(int));
}
}

private slots:
void valueChanged(int inValue) { *_modelField = inValue; }

Как бы тут и так видно, что view вернет ему int и он присвоит это значение своему T_IntegralType (при этом приведет тип, естественно).

Т.е. как бэ он там не ухищрялся с fastdelegate и своими костылями, ИМХО, код у него все равно кривой.

И, скорее всего, задачу которую он решал скорее всего можно решить в разы проще.

Подробнее


[club99076357|EVILEG - Qt QML Android], http://stackoverflow.com/questions/16794695/qt5-overloaded-signals-and-slots

Подробнее


Prevent QDockWidget autosizing behaviour
-------------------------------------
Qt 5.5.0

In my application, I have a QGraphicsView as the main widget and a QDockWidget for properties.
The goal is for the user to select an item in the graphics view and, depending on the item, present the appropriate properties for that item.

I achieve this by having a properties manager widget with a layout containing each of the properties widgets. I have signals and slots hooked up for getting the currently selected item, and then show() the widget I need and hide() the rest.

This works great! However, when selecting different items, the dock shrinks or grows based on the shown widget. It is very jarring, and rather annoying. The thing is though, that when the user manually resizes the dock, it maintains that size. I want the maintained size to be default rather than this autosizing behaviour.

Things I've tried:

I've tried changing the sizePolicy() of the dock and the mainwindow: No effect.

I've set a minimum size for my properties manager which does indeed prevent the dock from shrinking when a smaller set of properties is shown. However, I still want the user to be able to shrink the dock to a smaller size if they wish, and this method prevents that...

Conclusion:

Is there a flag or something that is set when the user resizes the dock that tells it to maintain that size? If so, is there a way to manually set it?

I haven't tried subclassing QDockWidget or QMainWindow yet. Is there a method(s) that I can override to achieve the correct behaviour?

Thanks for any help!

Вопрос задан 2 мин. назад (0 ответов)
#stackoverflow #cpp #qt #qdockwidget

Подробнее


То же был в восторге одно время от Lazarus. Но когда начал программировать в QT, понял, что он более гибкий, и многие вещи гораздо легче сделать, чем в Lazarus.
Например.
Я буду говорить о Delphi, но принципы с Lazarus там идентичны. Когда мне нужно было в ячейки таблицы StringGrid добавить чек боксы, то пришлось потратить не мало времени, чтобы найти пример этого когда и привязать его к моей программе. Как это работает, я так и не понял. В QT всё гораздо проще: там можно целую группу виджетов засунуть в слой, а потом его запихнуть в ячейку таблицы.
Когда я создавал в Delphi динамически кнопки, то всегда было проблемой к кнопкам привзяать конкретное действие. В QT - механизм сигналов и слотов позволяет это сделать с лёгкостью.
Единственное, чего не хватает в QT, так это обработчика исключений "try except".
И не помешало бы сделать особый вид сигналов, которые можно было бы получать от "all".
Допустим, у нескольких объектов есть сигналы с одинаковым именем.
Чтобы не делать кучу коннектов, проще было бы написать:
connect(all,SIGNAL(tratata()),&obj,SLOT(qwerty()))
Ещё бы не помешали особые виды сигналов, которые можно было бы определить для всего проекта и вызывать в любом классе, независимо от наличия объявленного объекта с этим сигналом в вызывающем классе.

Подробнее


Compile-time рефлексия D, практика
Доброго времени суток, хабр!

В прошлой статье были рассмотренны базовые элементы compile-time рефлексии, те кирпичики, из которых строят «настоящие» метаконструкции. В этой статье я хочу показать некоторые такие приёмы. Попробуем реализовать сигналы и слоты, похожие на те, что в Qt, будет примерно так:
class Foo : XObject
{
@​signal
void message( string str );
}
class Bar : XObject
{
@​slot
void print( string str ) { writefln( "Bar.print: %s", str ); }
}
void main()
{
auto a = new Foo, b = new Bar;
connect( a.message, b.print );
a.message( "hello habr" ); // Bar.print: hello habr
}

Осторожно: много кода (с комментами).
Читать дальше &rarr;

Подробнее


Qt is cute [1]: Signal-slots
Немного о сигналах и слотах в терминах Qt.

Обсуждение: http://pikabu.ru/story/_3264661

Следующая, третья, часть здесь: http://pikabu.ru/story/_3267004

Подробнее



#ifndef QMTABLEWIDGET_H
#define QMTABLEWIDGET_H

#include <QTableWidget>

class QMTableWidget : public QTableWidget
{
Q_OBJECT
public:
explicit QMTableWidget(QWidget [id2956970|Artyom Grachov] = 0);

protected:
QModelIndex moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers);

signals:

public slots:

};

#endif // QMTABLEWIDGET_H
#include "qmtablewidget.h"

QMTableWidget::QMTableWidget(QWidget [id2956970|Artyom Grachov]) :
QTableWidget(parent)
{
}

QModelIndex QMTableWidget::moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers)
{
if((columnCount() < 2) || (currentColumn() == 0))
if(cursorAction == QAbstractItemView::MoveLeft)
cursorAction = QAbstractItemView::MovePageUp;
if((columnCount() < 2) || (currentColumn() == columnCount()-1))
if(cursorAction == QAbstractItemView::MoveRight)
cursorAction = QAbstractItemView::MovePageDown;

return QTableWidget::moveCursor(cursorAction, modifiers);
}

Подробнее


Данные уже целиком на уровне кода. Вообще, почитай просто мануалы, чтобы понять логику Qt. А именно концепцию signal -> slot, которая в Qt используется для связи всего со всем.

Подробнее


Всем доброго времени суток, друзья!
Недавно решил осваивать методы создания кроссплатформенных приложений с графическим пользовательским интерфейсом. Ну всякие окошки, кнопочки, поля для ввода какого-нибудь текста и так далее.

Ну и первым, что мне показалось интересным, оказался QT Creator.
http://www.linuxforu.com/2012/03/developing-apps-qt-part-3/ - Имхо отличное пошаговое описание того, как это нужно делать.

Подробнее


/* Суровость холостяцкой жизни в стиле QT (c) */

connect(mind, SIGNAL(toSex()), body, SLOT(jerkOff()));

Подробнее


require 'Qt4'
require 'editor.rb'

class StartQT4 < Qt::MainWindow

slots 'file_dialog()'

def initialize parent=nil
super
@ui = Ui_Notepad.new
@ui.setupUi self
Qt::Object.connect(@ui.b_open, SIGNAL('clicked()'), self, SLOT('file_dialog()'))
end

def file_dialog
f = Qt::FileDialog
text = File.new(f.getOpenFileName).read
@ui.editor_window.setText text
end
end

if $0 == __FILE__
app = Qt::Application.new(ARGV)
myapp = StartQT4.new
myapp.show
app.exec
end

Подробнее


#include <qapplication.h>
#include <QHBoxLayout>
#include <qslider.h>
#include <qspinbox.h>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget *window=new QWidget;
window->setWindowTitle("Hello");
// QHBox *hbox = new QHBox(0);
//hbox->setCaption("Enter Your Age");
//hbox->setMargin(6);
//hbox->setSpacing(6);
QSpinBox [club40936280|Рекламная стойка SpinBox - Хорошая прибыль] = new QSpinBox;
QSlider [id18434|Андрей Колмаков] = new QSlider(Qt::Horizontal);
spinBox->setRange(0, 130);
slider->setRange(0, 130);
QObject::connect(spinBox, SIGNAL(valueChanged(int)),
slider, SLOT(setValue(int)));
QObject::connect(slider, SIGNAL(valueChanged(int)),
spinBox, SLOT(setValue(int)));
spinBox->setValue(35);
QHBoxLayout *layout=new QHBoxLayout;
layout->addWidget(spinBox);
layout->addWidget(slider);
window->setLayout(layout);
window->show();
//app.setMainWidget(hbox);
//hbox->show();
return app.exec();
}

Подробнее


Хм-м. Предполжим, у меня в qt есть вот такая вот вещь:
QSpinBox *spinbox = new QSpinBox;
QSlider [id18434|Андрей Колмаковъ] = new QSlider(Qt::Horizontal);
QObject::connect(spinbox, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int)));

QObject::connect(slider, SIGNAL(valueChanged(int)), spinbox, SLOT(setValue(int)));

Я делаю spinbox->setValue(50); рождается сигнал spinbox->valueChanged(50), вызывается slider->setValue(50), рождается сигнал slider->valueChanged(50), и мы вызываем spinbox->setValue(50), после которого valueChanged уже не рождается, но один лишний вызов функции всё же был. Можно ли как-то его избежать?

Подробнее