собственно вопрос в шапке: Как задать имя конкретно для кнопки "Show details", с другими кнопками проблем нет.
QMessageBox messageBox;
messageBox.setText("Текст");
// Изменить текст стандартной кнопки (проблем нет)
messageBox.addButton("Отменить", QMessageBox::Cancel)
// Здесь отображаются детали по нажатию кнопки "Show details" и "Hide details"
// текст кнопки меняется в зависимости от состояния кнопки (стандартное поведение)
// После добавления текста, кнопка создается по умолчанию
messageBox.setDetailedText("Детали");
Как изменить текст этой кнопки на свой? Стандартной роли у этой кнопки нет (я не нашёл), она создается автоматически при установке текста в функцию setDetailedText(), доступ к ней я получить не могу, стандартные кнопки созданные по умолчанию функция buttons() не хранит, но т.к мы добавили кнопку Cancel и свой текст к ней с помощью функции addButton() в списке хранится только она, отследить нажата кнопка "Show details" или нет не получается.
UPDATE
Немного подумав, получился такой пример, но он всё равно не работает корректно, текст сбрасывается.
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>
#include <QAbstractButton>
#include <QTextEdit>
#include <QPushButton>
#include <QList>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
box = new QMessageBox;
box->setDetailedText("Детали");
QList<QAbstractButton*> listButtons = box->buttons();
QPushButton *pushButton = NULL;
for (QList<QAbstractButton*>::iterator it = listButtons.begin(); it != listButtons.end(); ++it)
{
QAbstractButton * button = *it;
if (box->buttonRole(button) == QMessageBox::ActionRole)
{
pushButton = qobject_cast<QPushButton*>(button);
}
}
if (pushButton)
{
// Хотим видеть состояние нажатия кнопки
pushButton->setCheckable(true);
// Текст отоброжается, но не влазит (Он отображается и в виджете, до первого клика по кнопке)
pushButton->setText("Показать детали");
// А вот размер кнопки не изменяется
pushButton->resize(QSize(200, 50));
connect(pushButton, SIGNAL(toggled(bool)), this, SLOT(onClick(bool)));
}
box->exec();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::onClick(bool click)
{
QPushButton * button = qobject_cast<QPushButton*>(sender());
// Видим пока еще текст "Показать детали"
qDebug() << button->text();
if (click)
{
button->setText("Скрыть детали");
}
else
{
button->setText("Показать детали");
}
// Видим свой текст только в дебаге, но в самом виджете он не изменился, а возвратился на Hide Details
qDebug() << button->text();
// При следующих кликах видим только Show Details/Hide Details нами заданный текст не отображает
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Не получается сохранить токенВ файле preferences
Выскакивает ошибка при сборке проекта Error: Program type already present: comlaba2