У меня есть mainWindow
и Dialog
в Qt. Я открываю два изображения в MainWindow. После выполнения операции с изображением (обрезка, изменение размера, поворот) на MainWindow. Я хочу отправить изображения другим window (QDialog)
. Как я могу отправить его как parameter
? Мой неполный код ниже;Отправьте путь изображения на другую функцию
MainWindow::MainWindow()
{
openButton_1 = new QPushButton(tr("Open"));
cropButton_1 = new QPushButton(tr("Crop"));
rotateButton_1 = new QPushButton(tr("Rotate"));
resizeButton_1 = new QPushButton(tr("Resize"));
doneButton = new QPushButton(tr("Done"));
....
....
....
....
....
connect(openButton_1, SIGNAL(clicked()), this, SLOT(open1()));
connect(openButton_2, SIGNAL(clicked()), this, SLOT(open2()));
connect(doneButton, SIGNAL(clicked()), this, SLOT(done()));
// Закончили функция() для открытия нового окна
void MainWindow::done()
{
CompareImage dialog(this);
dialog.exec();
}
// Новое диалоговое окно
CompareImage::CompareImage(QWidget *parent) : QDialog(parent)
{
pushButton = new QPushButton(tr("TesT"));
graphicsScene = new QGraphicsScene;
graphicsView = new QGraphicsView(graphicsScene);
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(pushButton);
mainLayout->addWidget(graphicsView);
setLayout(mainLayout);
}
// А вот и моя открытая функция()
void MainWindow::open(int signal)
{
QString fileName = QFileDialog::getOpenFileName(this,
tr("Open File"), QDir::currentPath());
if (!fileName.isEmpty()) {
QImage image(fileName);
if (image.isNull()) {
QMessageBox::information(this, tr("Image Viewer"),
tr("Cannot load %1.").arg(fileName));
return;
}
QGraphicsPixmapItem* item = new QGraphicsPixmapItem(QPixmap::fromImage(image));
if(signal == 1)
{
graphicsScene_1->addItem(item);
graphicsView_1->show();
}
else if(signal == 2)
{
graphicsScene_2->addItem(item);
graphicsView_2->show();
}
}
}
Полезно использовать QGraphicsPixmapItem* item
но я не мог сделать это. Не могли бы вы мне помочь? Спасибо за идеи ..
> ИЗМЕНИТЬ: здесь также мой open1 и open2 работать, чтобы понять ситуацию ясно ..
void MainWindow::open1()
{
open(1);
}
void MainWindow::open2()
{
open(2);
}
Не могу понять, как вы посылаете сигнал для открытия функции? что такое значение сигнала при вызове open? – Kunal
Я использую два открытых слота: open1() и open2(), таким образом, я могу отправить сигнал. Я не вызываю функцию Open с помощью кнопок. Я вызываю функцию open() в другой функции со значениями, такими как open (1) или open (2) – goGud
'Хорошая идея использовать элемент QGraphicsPixmapItem *, но я не мог сделать это' Что вы подразумеваете под этим, вы не смогли бы это сделать? ? – thuga