PDA

View Full Version : سوال: عوض کردن محل ایکون ها در تولبار رمان اجرا و درگ کردن فولدر



omidshaman
سه شنبه 12 دی 1391, 23:28 عصر
چجوری میشه کاری کرد که بشه ایکون ها توی تولبار رو جابه جا کرد؟( منظورم زمان اجراست مثل تولبار گوگل کروم !)
و یک سوال دیگه تو برنامه من یک plainTextEdit وجود داره راهی هست که بشه یک فولدر رو از خارج از برنامه داخلش درگ کرد بعد ادرس اون فولدر بیاد داخل این plaintextedit ?
البته 2 -3 تا سوال دیگه هم دارم:لبخند:
برای عوض کردن رنگ تولبار و اون قسمت ابی بالای برنامه چکار باید کرد ؟
عوض کردن رنگ باتون و تکست باکس و این چیزا چی؟
مثلا میشه همین plaintextedit رو کاری کرد رنگ پس زمینش سیاه باشه بعد با سفید توش نوشتت؟

omidshaman
سه شنبه 12 دی 1391, 23:51 عصر
اون 2تای اخری + رنگ تولبار رو فهمیدم چجوریه

ui->plainTextEdit->setStyleSheet("background-color: rgb(255, 0, 0); color: rgb(255, 0, 255)");

QPalette palette;
palette.setColor(ui->menuBar->backgroundRole(), Qt::black);
palette.setColor(ui->menuBar->foregroundRole(), Qt::white);
ui->menuBar->setPalette(palette);

alamate_aoal
شنبه 16 دی 1391, 06:31 صبح
یه زیر کلاس از کلاس QToolBar بساز و در آن متدهای dropEvent, mouseMoveEvent, dragMoveEvent و dragEnterEvent رو reimplement کن.
اوضاع به این سادگی که گفتم نیست. احتمالا نیاز به دانستن مطالب بیشتری (http://lmgtfy.com/?q=Drag+and+Drop+%2B+Qt) خواهی داشت.

برای سوال دومت قضیه کمی ساده‌تر هست , فقط کافیه بگی هلو تا بپره توی گلو!


#include <QMimeData>
#include <QFileInfo>

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);

setAcceptDrops(true);
ui->plainTextEdit->setAcceptDrops(false);
}

void MainWindow::dragEnterEvent(QDragEnterEvent *event)
{
if (event->mimeData()->hasUrls())
foreach (QUrl url, event->mimeData()->urls())
if (QFileInfo(url.toLocalFile()).isDir())
event->accept();
}

void MainWindow::dropEvent(QDropEvent *event)
{
ui->plainTextEdit->clear();

foreach (QUrl url, event->mimeData()->urls())
if (QFileInfo(url.toLocalFile()).isDir())
ui->plainTextEdit->appendHtml(
"<B>Folder Name : </B>" + QFileInfo(
url.toLocalFile()).fileName() );
}