الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف استخدم سطران في QLineEdit

بدأه اسلام مصطفي في 7 أغسطس 2011 · 10 رد · 974 مشاهدة · في لغة Python
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته،

اقوم بكتابة برنامج لالة حاسبة و معظم برامج الألة الحاسبة تحتوي علي شاشة سطر يكتب فيه المستخدم الأرقام و السطر الأخر يكون في اعلي الشاشة او اسفلها و يحتوي مثلا علي نوع الخطأ

و باستخدامي ل QLineEdit فلم اجد هذه الخاصية ، هل هذه هي ال Widget المناسبة ام هناك اخري تصلح للغرض المطلوب ؟

شكراً مقدما

#2

استخدم QTextEditor أو QPlainTextEditor والفرق ان الأول يدعم تنسيق النص بـ css ويكون محتواه HTML

other ESTJ thing

اقتباس
Help Me To Help You

0xBAD00DAD.png

#3
ihope كتب:

استخدم QTextEditor أو QPlainTextEditor والفرق ان الأول يدعم تنسيق النص بـ css ويكون محتواه HTML

جربتهم، لا اعتقد اي منهم هو الحل المناسب، اريد ان اسمح للمستخدم باستخدام سطر واحد فقط و ليس الحرية لاستخدام العديد من الأسطر، جرب الة حاسبة علي لينكس او ويندوز و لاحظ طريقة عمل الشاشة

#4

ممكن تاخد صورة لمثال لأني مش قادر افهمك :)

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#5
ahmed_youssef كتب:

ممكن تاخد صورة لمثال لأني مش قادر افهمك :)

عذا لعدم قدرتي علي ايصال المعلومة بشكل جيد، ها هي صورة اتمني ان توضح الفكرة

post-243049-057313000 1312684374_thumb.p

المرفقات
2Calc.png
#6

فهمتك .. في تطبيق gcalctool بيستخدموا GtkTextView

وفكرة العمل هي إضافة سطر جديد في حال وجود خطأ وعند تعديل المعادلة يتم حذف السطر الأخير فيه

فلو اردت تطبيق نفس الكيفية فالحل إستخدام QPlainTextEdit

*لماذا لاتجرب عمل ويدجت مخصص مكون من QLineEdit او QPlainTextEdit وصورة تظهر في حال وجود خطأ ؟ ;)

تم تعديل هذه المشاركة بواسطة ahmed_youssef في 7 أغسطس 2011 في 09:35

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#7

السلام عليكم

أعتقد أنه عليك أن ترث QLineEdit لإضافة ما تريده من خاصيات، و إن كنت فهمت ما تريد فهذا الكود سيعمل

أولا تعريف الكلاس

class MyLineEdit : public QLineEdit
{
    Q_OBJECT
private:
    QString secondLine;                             //يحتوي النص في السطر التاني
protected:
   virtual void paintEvent(QPaintEvent *e);         
public:
    MyLineEdit(QWidget *parent=0);
public slots:
    void setSecondLine(QString secondLine);       //استدعي هذه الدالة للتعديل على السطر التاني
};

الدوال:

MyLineEdit::MyLineEdit(QWidget *parent):QLineEdit(parent)
{
    this->secondLine.clear();
    this->setMinimumHeight(30);                // لنترك مكانا للسطر التاني
    this->setAlignment(Qt::AlignTop);          // السطر الرئيسي في الأعلى 
}

void MyLineEdit::paintEvent(QPaintEvent *e)
{
    QLineEdit::paintEvent(e);

    QPainter painter(this);

    painter.setPen(Qt::red);                 // لون السطر التاني، يمكن عمل أكثر من ذلك و ذلك باستعاء 
                                             // setFont
    painter.drawText(4,25,this->secondLine);
}
void MyLineEdit::setSecondLine(QString secondLine)
{
    this->secondLine=secondLine;
    this->repaint();
}

للإشارة، فكل ما عليك هو استعمال الكلاس كما تستعمل QLineEdit

#8

وده حل أخر

from PySide.QtGui import QWidget , QVBoxLayout
from PySide.QtGui import QLineEdit 
from PySide.QtCore import Qt

class Screen(QWidget):
	subItemStyle = "background-color:transparent;color:yellow;border:0px"
	def __init__(self, w = 300 , h= 50 ,parent=None):
		QWidget.__init__(self, None)
		self.setStyleSheet("background-color:blue;border-radius:5px;")
		self.resize(w,h)
		self.setMinimumSize(w,h)

		self.aboveLineEdit = QLineEdit(self)
		self.aboveLineEdit.move(2,2)
		self.aboveLineEdit.resize(w,h / 2)
		self.aboveLineEdit.setStyleSheet(self.subItemStyle )
		self.aboveLineEdit.setText ("Hello Value")
		self.aboveLineEdit.setAlignment(Qt.AlignRight)

		self.buttomLineEdit = QLineEdit(self)
		self.buttomLineEdit.move(2,h / 2 + 2)
		self.buttomLineEdit.resize(w,h / 2)
		self.buttomLineEdit.setText ("Hello Hint")
		self.buttomLineEdit.setStyleSheet(self.subItemStyle )


	def setValueText(self, text):
		self.aboveLineEdit.setText(text)
	def setHintText(self, text):
		self.buttomLineEdit.setText(text)

if __name__ == '__main__':
	from PySide.QtGui import QApplication
	from sys import argv , exit
	app = QApplication(argv)
	screen = Screen()
	screen.setValueText("rest of RAMADAN = 30 - 7 = 23 day bass")
	screen.setHintText("no Errors 3la el sob7")
	screen.show()
	app.exec_()
	exit

تم تعديل هذه المشاركة بواسطة ihope في 7 أغسطس 2011 في 20:04

1

other ESTJ thing

اقتباس
Help Me To Help You

0xBAD00DAD.png

#9

شكرا لكم جميعاً و و رأيت ان اسهل فكرة هي فكرة ihope و لكني استخدمت setSpacing ، الأن اعمل علي تغير شكل الألة سوف اريها لكم عندما انتهي :) و أستاذ احمد سوف اقوم بتجربة ايكونة او صورة بدل الخطأ .

7.marouane كتب:

السلام عليكم

أعتقد أنه عليك أن ترث QLineEdit لإضافة ما تريده من خاصيات، و إن كنت فهمت ما تريد فهذا الكود سيعمل

أولا تعريف الكلاس

class MyLineEdit : public QLineEdit
{
    Q_OBJECT
private:
    QString secondLine;                             //يحتوي النص في السطر التاني
protected:
   virtual void paintEvent(QPaintEvent *e);         
public:
    MyLineEdit(QWidget *parent=0);
public slots:
    void setSecondLine(QString secondLine);       //استدعي هذه الدالة للتعديل على السطر التاني
};

الدوال:

MyLineEdit::MyLineEdit(QWidget *parent):QLineEdit(parent)
{
    this->secondLine.clear();
    this->setMinimumHeight(30);                // لنترك مكانا للسطر التاني
    this->setAlignment(Qt::AlignTop);          // السطر الرئيسي في الأعلى 
}

void MyLineEdit::paintEvent(QPaintEvent *e)
{
    QLineEdit::paintEvent(e);

    QPainter painter(this);

    painter.setPen(Qt::red);                 // لون السطر التاني، يمكن عمل أكثر من ذلك و ذلك باستعاء 
                                             // setFont
    painter.drawText(4,25,this->secondLine);
}
void MyLineEdit::setSecondLine(QString secondLine)
{
    this->secondLine=secondLine;
    this->repaint();
}

للإشارة، فكل ما عليك هو استعمال الكلاس كما تستعمل QLineEdit

لم افهم الكود جيدأ، انا استخدم بايثون مع PySide

ربما هذا الكود مكتوب كاملاً بالكيو تي

و لكن شكرا للمساعدة :)

#10

تحذير : لو مش بتستحمل الصدمات بلاش تشوف الصورة

http://www.flickr.com/photos/machinified/6021267848/in/photostream

ربما تكون مرعبة قليلا ؟ و لكن كنوع من التغير

لسا باقي كام مشكلة كدا مش عارف ليه ظهروا بس هحلهم ان شاء الله و تبقي الألة جاهزة للاستعمال الادمي.

شكرا جدا لمساعدتكم :)

#11
اقتباس
لم افهم الكود جيدأ، انا استخدم بايثون مع PySide

ربما هذا الكود مكتوب كاملاً بالكيو تي

و لكن شكرا للمساعدة :)

آسف أشد الأسف أخي فالكود مكتوب بالسي ++، ولم أنتبه أن المنتدى للبايثون

لكن الفكرة تبقى نفسها كل ما عليك هو اشتقاق كلاس من QLineEdit و إعادة تعريف paintEvent لكي يرسم النص

تحياتي

مواضيع مشابهة